BR112021000379A2 - Método e aparelho para sinalização de função de mapeamento de parâmetro de quantização de croma - Google Patents

Método e aparelho para sinalização de função de mapeamento de parâmetro de quantização de croma Download PDF

Info

Publication number
BR112021000379A2
BR112021000379A2 BR112021000379-7A BR112021000379A BR112021000379A2 BR 112021000379 A2 BR112021000379 A2 BR 112021000379A2 BR 112021000379 A BR112021000379 A BR 112021000379A BR 112021000379 A2 BR112021000379 A2 BR 112021000379A2
Authority
BR
Brazil
Prior art keywords
chroma
mapping function
mapping
value
information
Prior art date
Application number
BR112021000379-7A
Other languages
English (en)
Inventor
Sergey Yurievich IKONIN
Roman Igorevich CHERNYAK
Timofey Mikhailovich SOLOVYEV
Alexander Alexandrovich KARABUTOV
Jianle Chen
Elena Alexandrovna Alshina
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 BR112021000379A2 publication Critical patent/BR112021000379A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • 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/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/172Methods 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 picture, frame or field
    • 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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

MÉTODO E APARELHO PARA SINALIZAÇÃO DE FUNÇÃO DE MAPEAMENTO DE PARÂMETRO DE QUANTIZAÇÃO DE CROMA. Um método de obter um parâmetro de quantização (QP) de crominância para componentes de crominância com base em um QP de luminância para componente de luminância, em que o método é realizado por um decodificador, compreendendo analisar (1603) um fluxo de bits recebido para obter o QP de luminância e informação de uma função de mapeamento (f) que associa um índice de QP (QPi) ao QP de crominância (QPc); obter (1605) o QPi com base pelo menos em uma parte no QP de luminância; obter (1607) a função de mapeamento com base na informação obtida; e obter (1609) um QPc com base na função de mapeamento obtida e no QPi obtido.

Description

MÉTODO E APARELHO PARA SINALIZAÇÃO DE FUNÇÃO DE MAPEAMENTO DE PARÂMETRO DE QUANTIZAÇÃO DE CROMA REFERÊNCIA CRUZADA PARA PEDIDOS RELACIONADOS
[001] Este pedido de patente reivindica prioridade do pedido de patente provisório US 62/839.607, depositado em 26 de abril de 2019, assim como do pedido de patente internacional PCT/RU2019/000444, depositado em 21 de junho de 2019, assim como do pedido de patente provisório US 62/871.197, depositado em 7 de julho de 2019, assim como do pedido de patente provisório US 62/872.238, depositado em 9 de julho de 2019. As respectivas divulgações dos pedidos de patente mencionados anteriormente estão incorporadas a este documento pela referência nas suas totalidades.
CAMPO TÉCNICO
[002] Modalidades do presente pedido (divulgação) de uma maneira geral dizem respeito ao campo de decodificação de imagem e/ou de vídeo e mais particularmente a aparelho e método para sinalização de parâmetro de quantização de croma.
ANTECEDENTES
[003] Codificação de vídeo (codificação e decodificação de vídeo) é usada em uma faixa ampla de aplicações de vídeo digital, por exemplo, TV digital de difusão, transmissão de vídeo pela Internet e redes móveis, aplicações de conversação em tempo real tais como chat de vídeo, videoconferência, discos DVD e Blue-ray, sistemas de aquisição e edição de conteúdo de vídeo, e câmeras de vídeo de aplicações de segurança.
[004] A quantidade de dados de vídeo necessária para representar um vídeo mesmo que relativamente curto pode ser substancial, o que pode resultar em dificuldades quando os dados devem ser transferidos em fluxo contínuo ou transmitidos de outro modo através de uma rede de comunicações com capacidade de largura de banda limitada. Assim, dados de vídeo de uma maneira geral são comprimidos antes de serem transmitidos através de redes de telecomunicações atuais. O tamanho de um vídeo também pode ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento porque recursos de memória podem ser limitados. Dispositivos de compressão de vídeo frequentemente usam software e/ou hardware na origem para codificar os dados de vídeo antes da transmissão ou armazenamento, diminuindo desse modo a quantidade de dados necessários para representar imagens de vídeo digital. Os dados comprimidos são então recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas sempre crescentes de maior qualidade de vídeo, técnicas de compressão e descompressão aperfeiçoadas que melhoram razão de compressão com pouco a nenhum sacrifício em qualidade de imagem são desejáveis.
SUMÁRIO
[005] Modalidades do presente pedido fornecem aparelhos e métodos para codificação e decodificação de acordo com as reivindicações independentes.
[006] Os indicados anteriormente e outros objetivos são alcançados pela matéria em questão das reivindicações independentes. Formas de implementação adicionais são evidentes a partir das reivindicações dependentes, da descrição e das figuras.
[007] A presente divulgação fornece: um método de obter um parâmetro de quantização (QP) de crominância para componentes de crominância com base em um QP de luminância para um componente de luminância, em que o método é realizado por um decodificador, compreendendo: receber um fluxo de bits; analisar o fluxo de bits para obter o QP de luminância e informação em uma tabela de mapeamento de QP de croma que associa um índice de QP (QPi) ao QP de crominância (QPc); obter o QPi com base pelo menos em uma parte no QP de luminância; obter a tabela de mapeamento de QP de croma com base na informação obtida; obter um QPc com base na tabela de mapeamento de QP de croma obtida e no QPi obtido; e obter parâmetro de quantização de crominância com base no QPc obtido.
[008] No método, tal como descrito acima, qPCb, qPCr e qPCbCr podem ser derivados tal como a seguir: qPChroma = Clip3( −QpBdOffset, 63, QpY ); qPCb = ChromaQpTable[ 0 ][ qPChroma ]; qPCr = ChromaQpTable[ 1 ][ qPChroma ]; qPCbCr = ChromaQpTable[ 2 ][ qPChroma ]; em que os parâmetros de quantização de croma para os componentes Cb e Cr, Qp’Cb e Qp’Cr, e codificação de Cb-Cr de junção Qp’CbCr podem ser derivados tal como a seguir: Qp’Cb = Clip3( −QpBdOffset, 63, qPCb + pps_cb_qp_offset + slice_cb_qp_offset + CuQpOffsetCb ) + QpBdOffset; Qp’Cr = Clip3( −QpBdOffset, 63, qPCr + pps_cr_qp_offset
+ slice_cr_qp_offset + CuQpOffsetCr ) + QpBdOffset; Qp’CbCr = Clip3( −QpBdOffset, 63, qPCbCr + pps_joint_cbcr _qp_offset_value + slice_joint_cbcr_qp_offset +CuQpOffsetCbCr ) + QpBdOffset; onde ChromaQpTable é a tabela de mapeamento de QP de croma; onde QPi corresponde ao qPChroma; onde QPc corresponde ao qPCb, qPCr e qPCbCr; onde QpBdOffset é o deslocamento de profundidade de bits calculado com base na profundidade de bits das amostras dos arranjos de luma e croma usando a fórmula: QpBdOffset = 6 * bit_depth_minus8, onde bit_depth_minus8 deve estar na faixa de 0 a 8, inclusivo; onde pps_cb_qp_offset e pps_cr_qp_offset especificam os deslocamentos para o parâmetro de quantização de luma Qp’Y usado para derivar Qp’Cb e Qp’Cr, respectivamente; onde pps_joint_cbcr_qp_offset_value especifica o deslocamento para o parâmetro de quantização de luma Qp’Y usado para derivar Qp’CbCr ; onde slice_cr_qp_offset especifica uma diferença para ser adicionada ao valor de pps_cr_qp_offset ao determinar o valor do parâmetro de quantização Qp’Cr; onde slice_cb_qp_offset especifica uma diferença para ser adicionada ao valor de pps_cb_qp_offset ao determinar o valor do parâmetro de quantização Qp’Cb; onde slice_joint_cbcr_qp_offset especifica uma diferença para ser adicionada ao valor de pps_joint_cbcr_qp_offset_value ao determinar o valor do Qp’CbCr;
onde as variáveis CuQpOffsetCb, CuQpOffsetCr e CuQpOffsetCbCr especificam valores para serem usados ao determinar os respectivos valores dos parâmetros de quantização Qp’Cb, Qp’Cr e Qp’CbCr para o decodificador.
[009] No método tal como descrito acima, a tabela de mapeamento de QP de croma pode associar cada elemento x de um conjunto X, em que o conjunto X pode corresponder a QPis em uma faixa de QPis permitida suportada pelo decodificador, ou de qualquer subconjunto do conjunto X, a um elemento y de um conjunto Y, em que o conjunto Y pode corresponder a QPcs em uma faixa de QPcs permitida suportada pelo decodificador.
[010] No método tal como descrito acima, em que os valores da tabela de mapeamento de QP de croma podem satisfazer uma função de mapeamento.
[011] No método tal como descrito acima, a função de mapeamento pode ser uma função monotonicamente crescente.
[012] No método tal como descrito acima, o conjunto X pode incluir um subconjunto A no qual a função de mapeamento f é não crescente, isto é: f(x) - f(x-1) = 0 para qualquer x do subconjunto A.
[013] No método tal como descrito acima, o conjunto X pode incluir um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que A+B=X e c é um número natural não menor que 1.
[014] No método tal como descrito acima, o conjunto X pode incluir um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que c é um número natural não menor que 1.
[015] No método tal como descrito acima, a função de mapeamento f no subconjunto B pode ser definida tal como a seguir: f(x) - f(x-1) = 1, para qualquer x do subconjunto B.
[016] No método tal como descrito acima, a informação da função de mapeamento pode compreender informação do tamanho do subconjunto A (sizeA) e elementos ai do subconjunto A.
[017] No método tal como descrito acima, a informação da função de mapeamento pode compreender o tamanho do subconjunto A.
[018] No método tal como descrito acima, a informação da função de mapeamento pode compreender valores diretos de elementos ai do subconjunto A.
[019] No método tal como descrito acima, a informação da função de mapeamento pode compreender uma diferença (delta_ai) entre um valor atual do elemento ai e um valor anterior do elemento ai-1, e valores ai são obtidos tal como a seguir: ai = ai-1 + delta_ai, para qualquer i > 0.
[020] No método tal como descrito acima, a informação da função de mapeamento pode compreender uma diferença (delta_a0) entre um primeiro valor a0 e um valor de ponto de início, denotado por starting_point_value, em que o primeiro valor a0 do subconjunto A é obtido com base na diferença (delta_a0) tal como a seguir: a0 = starting_point_value + delta_ao, em que o valor de ponto de início starting_point_value é sinalizado no fluxo de bits ou é um valor predefinido.
[021] No método tal como descrito acima, o valor de ponto de início starting_point_value é um de 0, 21, 30, maxQPi >> 1, em que maxQPi é o valor de QPi máximo suportado pelo decodificador.
[022] No método tal como descrito acima, a informação da função de mapeamento pode ser sinalizada no fluxo de bits usando qualquer um dos seguintes códigos: código binário, de comprimento fixo, unário, unário truncado, binário truncado, Golomb ou Exp-Golomb.
[023] No método tal como descrito acima, a função de mapeamento pode ser obtida usando um comportamento funcional definido nos subconjuntos A e B, isto é, para qualquer argumento de entrada x do subconjunto B, a função de mapeamento aumenta por um valor inteiro igual ou maior que um, e para qualquer argumento de entrada x do subconjunto A, a função de mapeamento é plana tal como f(x)-f(x-1) = 0; onde é assumido que o primeiro valor de função de mapeamento correspondendo a x=0 é 0.
[024] No método tal como descrito acima, o comportamento funcional pode ser implementado iterativamente usando o seguinte pseudocódigo: chroma_qp_mapping_table[θ] = θ; // inicialização for (i = 1; i <= maxQP; i++) // maxQP é QP máximo suportado por decodificador { int incStep = 1; // incremento de função para conjunto B for (j = θ; j < cQpFlatSize; j++) // cQpFlatSize é tamanho do conjunto A
{ if (i == cQpFlat[j]) // arranjo de cQpFlat com elementos do conjunto A { incStep = 0; // incremento de função zero para o conjunto A (plano) break; } } chroma_qp_mapping_table[i] = chroma_qp_mapping_table[i-1] + incStep; }.
[025] No método tal como descrito acima, a informação da função de mapeamento pode compreender informação de valores b do subconjunto B, e o subconjunto A é obtido como A=X-B.
[026] No método tal como descrito acima, o subconjunto B pode incluir um ou mais sub-subconjuntos Bk, em que os sub-subconjuntos Bk incluem elementos x nos quais a função de mapeamento tem mesmo o incremento ck: f(x) - f(x-1) = ck, se x ∈ Bk, em que ck é um número natural.
[027] No método tal como descrito acima, a informação da função de mapeamento pode compreender informação do tamanho de pelo menos um dos sub-subconjuntos Bk (tamanho Bk) e elementos bi de pelo menos um dos sub-subconjuntos Bk.
[028] No método tal como descrito acima, a informação da função de mapeamento pode compreender informação do valor de incremento da função de mapeamento em pontos do sub-subconjunto Bk.
[029] No método tal como descrito acima, a informação da função de mapeamento pode compreender informação da quantidade de sub-subconjuntos Bk.
[030] No método tal como descrito acima, pelo menos uma parte da informação da função de mapeamento, representando a informação dos sub-subconjuntos Bk, pode ser obtida usando a seguinte sintaxe. cqp_set_num_m1 ue(v) for ( k = 0; k <= cqp_set_num_m1; k++ ) { cqp_set_inc[ k ] ue(v) cqp_set_size_m1[ k ] ue(v) cqp_set_p0[k] ue(v) for ( i = 1; i <= cqp_set_size_m1[ k ]; i++ ) cqp_set_delta_m1[ k ][ i ] ue(v) }
[031] No método tal como descrito acima, pelo menos uma parte da informação da função de mapeamento, representando a informação dos sub-subconjuntos Bk, pode ser obtida usando a seguinte sintaxe. cqp_set_num_m1 ue(v) for ( k = 0; k <= cqp_set_num_m1; k++ ) { cqp_set_inc[ k ] ue(v) cqp_set_size_m1[ k ] ue(v) cqp_set_p0[k] u(7) for ( i = 1; i <= cqp_set_size_m1[ k ]; i++ ) cqp_set_delta_m1[ k ][ i ] ue(v) }
[032] No método tal como descrito acima, o decodificador também pode compreender adicionalmente uma tabela de mapeamento de QP de croma predefinida, e o fluxo de bits pode compreender um indicador indicando se é para usar a uma tabela de mapeamento de QP de croma predefinida ou usar uma tabela de mapeamento de QP de croma sinalizada no fluxo de bits.
[033] No método tal como descrito acima, a informação da tabela de mapeamento de QP de croma pode ser sinalizada conjuntamente para todos os componentes de crominância.
[034] No método tal como descrito acima, a informação da tabela de mapeamento de QP de croma pode compreender um indicador indicando se a tabela de mapeamento de QP de croma é sinalizada para componentes Cb e Cr separadamente ou conjuntamente.
[035] No método tal como descrito acima, a informação da tabela de mapeamento de QP de croma pode ser sinalizada em: nível de sequência em um conjunto de parâmetros de sequência, ou nível de imagem em um conjunto de parâmetros de imagem, ou nível de grupo de peças em um conjunto de parâmetros de grupo de peças, ou em um conjunto de parâmetros de adaptação, ou em uma mensagem de informação suplementar de enriquecimento (SEI).
[036] No método tal como descrito acima, a tabela de mapeamento de QP de croma predefinida pode ser expressa tal como a seguir. qPi < 30 30 31 32 33 34 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 29 30 31 32 33 34 35 36 37 37 38 39 40 40 = qPi − 3
[037] No método tal como descrito acima, a tabela de mapeamento de QP de croma predefinida pode ser expressa tal como a seguir. qPi < 35 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 34 35 36 37 37 38 39 40 40 = qPi − 3
[038] No método tal como descrito acima, a informação da tabela de mapeamento de QP de croma pode ser sinalizada no fluxo de bits diretamente ou indiretamente.
[039] A presente divulgação divulga adicionalmente um decodificador compreendendo conjunto de circuitos de processamento para executar o método tal como descrito acima.
[040] A presente divulgação divulga adicionalmente um produto de programa de computador compreendendo um código de programa para realizar o método tal como descrito acima.
[041] A presente divulgação divulga adicionalmente um decodificador, compreendendo: um ou mais processadores; e um meio de armazenamento não transitório legível por computador acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para executar o método tal como descrito acima.
[042] A presente divulgação divulga adicionalmente um decodificador para obter um parâmetro de quantização (QP) de crominância para componentes de crominância com base em um QP de luminância para um componente de luminância, compreendendo: uma unidade de recebimento configurada para receber um fluxo de bits; uma unidade de análise configurada para analisar o fluxo de bits para obter o QP de luminância e informação em uma tabela de mapeamento de QP de croma que associa um índice de QP (QPi) ao QP de crominância (QPc); uma primeira unidade de obtenção configurada para obter o QPi com base pelo menos em uma parte no QP de luminância; uma segunda unidade de obtenção configurada para obter a tabela de mapeamento de QP de croma com base na informação obtida; uma terceira unidade de obtenção configurada para obter um QPc com base na tabela de mapeamento de QP de croma obtida e no QPi obtido; e uma quarta unidade de obtenção configurada para obter parâmetro de quantização de crominância com base no QPc obtido.
[043] Ter informação a respeito de tabela de mapeamento de QP de croma no fluxo de bits capacita ajuste para propriedades específicas de sinal de vídeo de entrada, tais como SDR ou HDR, ou intensidade e distribuição diferentes em canais de luminância e crominância, e por esta razão para melhorar eficiência de compressão e para melhorar equilíbrio entre componentes de croma e luma em sinal de vídeo reconstruído.
[044] No decodificador tal como descrito acima, qPCb, qPCr e qPCbCr podem ser derivados tal como a seguir: qPChroma = Clip3( −QpBdOffset, 63, QpY ); qPCb = ChromaQpTable[ 0 ][ qPChroma ]; qPCr = ChromaQpTable[ 1 ][ qPChroma ];
qPCbCr = ChromaQpTable[ 2 ][ qPChroma ]; em que os parâmetros de quantização de croma para os componentes Cb e Cr, Qp’Cb e Qp’Cr, e codificação de Cb-Cr de junção Qp’CbCr são derivados tal como a seguir: Qp’Cb = Clip3( −QpBdOffset, 63, qPCb + pps_cb_qp_offset + slice_cb_qp_offset + CuQpOffsetCb ) + QpBdOffset; Qp’Cr = Clip3( −QpBdOffset, 63, qPCr + pps_cr_qp_offset + slice_cr_qp_offset + CuQpOffsetCr ) + QpBdOffset; Qp’CbCr = Clip3( −QpBdOffset, 63, qPCbCr + pps_joint_cbcr _qp_offset_value + slice_joint_cbcr_qp_offset + CuQpOffsetCbCr ) + QpBdOffset; onde ChromaQpTable é a tabela de mapeamento de QP de croma; onde QPi corresponde a qPChroma; onde QPc corresponde a qPCb, qPCr e qPCbCr; onde QpBdOffset é o deslocamento de profundidade de bits calculado com base na profundidade de bits das amostras dos arranjos de luma e croma usando a fórmula: QpBdOffset = 6 * bit_depth_minus8, onde bit_depth_minus8 deve estar na faixa de 0 a 8, inclusivo; onde pps_cb_qp_offset e pps_cr_qp_offset especificam os deslocamentos para o parâmetro de quantização de luma Qp’Y usado para derivar Qp’Cb e Qp’Cr, respectivamente; onde pps_joint_cbcr_qp_offset_value especifica o deslocamento para o parâmetro de quantização de luma Qp’Y usado para derivar Qp’CbCr ; onde slice_cr_qp_offset especifica uma diferença para ser adicionada ao valor de pps_cr_qp_offset ao determinar o valor do parâmetro de quantização Qp’Cr;
onde slice_cb_qp_offset especifica uma diferença para ser adicionada ao valor de pps_cb_qp_offset ao determinar o valor do parâmetro de quantização Qp’Cb; onde slice_joint_cbcr_qp_offset especifica uma diferença para ser adicionada ao valor de pps_joint_cbcr_qp_offset_value ao determinar o valor do Qp’CbCr; onde as variáveis CuQpOffsetCb, CuQpOffsetCr e CuQpOffsetCbCr especificam valores para serem usados ao determinar os respectivos valores dos parâmetros de quantização Qp’Cb, Qp’Cr e Qp’CbCr para o decodificador.
[045] No decodificador tal como descrito acima, a tabela de mapeamento de QP de croma pode associar cada elemento x de um conjunto X, em que o conjunto X pode corresponder a QPis em uma faixa de QPis permitida suportada pelo decodificador, ou de qualquer subconjunto do conjunto X, a um elemento y de um conjunto Y, em que o conjunto Y pode corresponder a QPcs em uma faixa de QPcs permitida suportada pelo decodificador.
[046] No decodificador tal como descrito acima, os valores da tabela de mapeamento de QP de croma podem satisfazer uma função de mapeamento f.
[047] No decodificador tal como descrito acima, a função de mapeamento pode ser uma função monotonicamente crescente.
[048] Colocar esta restrição na função de mapeamento permite evitar configuração da função de mapeamento com comportamento “estranho”, por exemplo, inesperado e indesejável, quando QP de croma diminui com aumento de QP de luma; em outras palavras, evitar o caso em que qualidade de croma aumenta com diminuição de qualidade de luma. Ter restrição de aumento monotônico permite que qualidade de luma e de croma sejam sincronizadas. Como vantagem adicional, esta restrição permite economizar bits em sinalização de informação de função de mapeamento ao excluir a necessidade de descrever exasperação negativa da função.
[049] No decodificador tal como descrito acima, o conjunto X pode incluir um subconjunto A no qual a função de mapeamento f é não crescente, isto é: f(x) - f(x-1) = 0 para qualquer x do subconjunto A.
[050] No decodificador tal como descrito acima, em que o conjunto X pode incluir um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que A+B=X e c é um número natural não menor que 1.
[051] No decodificador tal como descrito acima, o conjunto X pode incluir um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que c é um número natural não menor que 1.
[052] No decodificador tal como descrito acima, a função de mapeamento f no subconjunto B pode ser definida tal como a seguir: f(x) - f(x-1) = 1, para qualquer x do subconjunto B.
[053] No decodificador tal como descrito acima, a informação da função de mapeamento pode compreender informação do tamanho do subconjunto A (sizeA) e elementos ai do subconjunto A.
[054] No decodificador tal como descrito acima, a informação da função de mapeamento pode compreender o tamanho do subconjunto A.
[055] No decodificador tal como descrito acima, a informação da função de mapeamento pode compreender valores diretos de elementos ai do subconjunto A.
[056] Sinalizar informação somente a respeito de pontos de subconjunto A permite manter sobrecarga de sinalização no nível razoável, assumindo que a maior parte de pontos de função de mapeamento mantém comportamento predefinido (por exemplo, f(x) - f(x-1) = c) e então não precisa ser sinalizada (subconjunto B). Isto permite obter o comportamento de função para o conjunto total X de valores suportados de QPi com sobrecarga de sinalização minimizada ao sinalizar somente esses pontos, onde comportamento de função difere de comportamento predefinido.
[057] No decodificador tal como descrito acima, a informação da função de mapeamento pode compreender uma diferença (delta_ai) entre um valor atual do elemento ai e um valor anterior do elemento ai-1, e valores ai são obtidos tal como a seguir: ai = ai-1 + delta_ai, para qualquer i >
0.
[058] Sinalizar diferenças em vez de valores diretos também permite economizar bits.
[059] No decodificador tal como descrito acima, a informação da função de mapeamento pode compreender uma diferença (delta_a0) entre um primeiro valor a0 e um valor de ponto de início, denotado por starting_point_value, em que o primeiro valor a0 do subconjunto A é obtido com base na diferença (delta_a0) tal como a seguir: a0 = starting_point_value + delta_ao,
em que o valor de ponto de início starting_point_value é sinalizado no fluxo de bits ou é um valor predefinido.
[060] No decodificador tal como descrito acima, o valor de ponto de início starting_point_value pode ser um de 0, 21, 30, maxQPi >> 1, em que maxQPi é o valor de QPi máximo suportado pelo decodificador. Escolher starting_point_value apropriado permite adicionalmente economizar bits em sinalização de primeiro valor.
[061] No decodificador tal como descrito acima, a informação da função de mapeamento pode ser sinalizada no fluxo de bits usando qualquer um dos seguintes códigos: código binário, de comprimento fixo, unário, unário truncado, binário truncado, Golomb ou Exp-Golomb.
[062] No decodificador tal como descrito acima, a função de mapeamento pode ser obtida usando um comportamento funcional definido nos subconjuntos A e B, isto é, para qualquer argumento de entrada x do subconjunto B, a função de mapeamento aumenta por 1 tal como f(x)-f(x-1) = 1, e para qualquer argumento de entrada x do subconjunto A, a função de mapeamento é plana tal como f(x)-f(x-1) = 0; onde é assumido que o primeiro valor de função de mapeamento correspondendo a x=0 é 0.
[063] No decodificador tal como descrito acima, o comportamento funcional pode ser implementado iterativamente usando o seguinte pseudocódigo: chroma_qp_mapping_table[θ] = θ; // inicialização for (i = 1; i <= maxQP; i++) // maxQP é QP máximo suportado por decodificador
{ int incStep = 1; // incremento de função para conjunto B for (j = θ; j < cQpFlatSize; j++) // cQpFlatSize é tamanho de conjunto A { if (i == cQpFlat[j]) // arranjo de cQpFlat com elementos de conjunto A { incStep = θ; // incremento de função zero para conjunto A (plano) break; } } chroma_qp_mapping_table[i] = chroma_qp_mapping_table[i-1] + incStep; }.
[064] No decodificador tal como descrito acima, a informação da função de mapeamento pode compreender informação de valores b do subconjunto B, e o subconjunto A é obtido como A=X-B.
[065] No decodificador tal como descrito acima, o subconjunto B pode incluir um ou mais sub-subconjuntos Bk, em que os sub-subconjuntos Bk incluem elementos x nos quais a função de mapeamento tem o mesmo incremento ck: f(x) - f(x-1) = ck, se x ∈ Bk, em que ck é um número natural.
[066] No decodificador tal como descrito acima, a informação da função de mapeamento pode compreender informação do tamanho de pelo menos um dos sub-subconjuntos Bk (tamanho Bk) e elementos bi de pelo menos um dos sub-
subconjuntos Bk.
[067] No decodificador tal como descrito acima, a informação da função de mapeamento pode compreender informação do valor de incremento da função de mapeamento em pontos do sub-subconjunto Bk.
[068] Isto permite aumentar flexibilidade da definição de função de mapeamento ao adicionar pontos onde a função pode ter velocidade diferente de exasperações (ck).
[069] No decodificador tal como descrito acima, a informação da função de mapeamento pode compreender informação da quantidade de sub-subconjuntos Bk.
[070] No decodificador tal como descrito acima, pelo menos uma parte da informação da função de mapeamento, representando a informação dos sub-subconjuntos Bk, pode ser obtida usando a seguinte sintaxe. cqp_set_num_m1 ue(v) for ( k = 0; k <= cqp_set_num_m1; k++ ) { cqp_set_inc[ k ] ue(v) cqp_set_size_m1[ k ] ue(v) cqp_set_p0[k] ue(v) for ( i = 1; i <= cqp_set_size_m1[ k ]; i++ ) cqp_set_delta_m1[ k ][ i ] ue(v) }
[071] No decodificador tal como descrito acima, pelo menos uma parte da informação da função de mapeamento, representando a informação dos sub-subconjuntos Bk, pode ser obtida usando a seguinte sintaxe. cqp_set_num_m1 ue(v) for ( k = 0; k <= cqp_set_num_m1; k++ ) {
cqp_set_inc[ k ] ue(v) cqp_set_size_m1[ k ] ue(v) cqp_set_p0[k] u(7) for ( i = 1; i <= cqp_set_size_m1[ k ]; i++ ) cqp_set_delta_m1[ k ][ i ] ue(v) }
[072] Usar códigos inteiros não assinados (ue(v)), tal como em exemplos acima, implica em restrição na função de mapeamento para ser monotonicamente crescente e permite adicionalmente economizar bits ao excluir a necessidade de transferir informação de sinal para deltas e incremento de função (ck).
[073] No decodificador tal como descrito acima, o decodificador pode compreender adicionalmente uma tabela de mapeamento de QP de croma predefinida, e o fluxo de bits compreende um indicador indicando se é para usar a uma tabela de mapeamento de QP de croma predefinida ou usar uma tabela de mapeamento de QP de croma sinalizada no fluxo de bits.
[074] Isto permite sinalizar informação a respeito de tabela de mapeamento somente para casos quando é benéfico, isto é, quando características de canais de luma e de croma diferem significativamente do caso comum, tal como para sinal de HDR, e usar uma tabela de mapeamento predefinida, a qual é apropriada para casos comuns. Isso permite economizar sobrecarga de sinalização para muitos casos comuns, para os quais a tabela de mapeamento predefinida tenha sido otimizada.
[075] No decodificador tal como descrito acima, a informação da tabela de mapeamento de QP de croma pode ser sinalizada conjuntamente para todos os componentes de crominância.
[076] No decodificador tal como descrito acima, a informação da tabela de mapeamento de QP de croma pode compreender um indicador indicando se a tabela de mapeamento de QP de croma é sinalizada para componentes Cb e Cr separadamente ou conjuntamente.
[077] Este aspecto permite um aumento adicional de flexibilidade de controle de processo de quantização para os casos quando canais de croma diferentes (por exemplo, canais Cb e Cr) têm características de sinais diferentes ao ter tabelas de mapeamento de QP de croma diferentes para canais de croma diferentes, o que por sua vez permite aumentar adicionalmente eficiência de compressão.
[078] No decodificador tal como descrito acima, a informação da tabela de mapeamento de QP de croma pode ser sinalizada em: nível de sequência no conjunto de parâmetros de sequência, ou nível de imagem no conjunto de parâmetros de imagem, ou nível de grupo de peças no conjunto de parâmetros de grupo de peças, ou em um conjunto de parâmetros de adaptação, ou em uma mensagem de informação suplementar de enriquecimento (SEI).
[079] No decodificador tal como descrito acima, a tabela de mapeamento de QP de croma predefinida pode ser expressa tal como a seguir. qPi < 30 30 31 32 33 34 35 36 37 38 39 40 41 42 43 > 43
QpC = qPi 29 30 31 32 33 34 35 36 37 37 38 39 40 40 = qPi − 3
[080] No decodificador tal como descrito acima, a tabela de mapeamento de QP de croma predefinida pode ser expressa tal como a seguir. qPi < 35 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 34 35 36 37 37 38 39 40 40 = qPi − 3
[081] No decodificador tal como descrito acima, a informação da tabela de mapeamento de QP de croma pode ser sinalizada no fluxo de bits diretamente ou indiretamente.
[082] O método de acordo com o primeiro aspecto da invenção pode ser realizado pelo aparelho de acordo com o terceiro aspecto da invenção. Recursos e formas de implementação adicionais do método de acordo com o terceiro aspecto da invenção correspondem aos recursos e formas de implementação do aparelho de acordo com o primeiro aspecto da invenção.
[083] O método de acordo com o segundo aspecto da invenção pode ser realizado pelo aparelho de acordo com o quarto aspecto da invenção. Recursos e formas de implementação adicionais do método de acordo com o quarto aspecto da invenção correspondem aos recursos e formas de implementação do aparelho de acordo com o segundo aspecto da invenção.
[084] De acordo com um quinto aspecto a invenção diz respeito a um aparelho para decodificar um fluxo de vídeo que inclui um processador e uma memória. A memória armazena instruções que induzem o processador para realizar o método de acordo com o primeiro aspecto.
[085] De acordo com um sexto aspecto a invenção diz respeito a um aparelho para codificar um fluxo de vídeo que inclui um processador e uma memória. A memória armazena instruções que induzem o processador para realizar o método de acordo com o segundo aspecto.
[086] De acordo com um sétimo aspecto, um meio de armazenamento legível por computador tendo instruções armazenadas que quando executadas induzem um ou mais processadores configurados para codificar dados de vídeo é proposto. As instruções induzem o um ou mais processadores para realizar um método de acordo com o primeiro ou segundo aspecto ou qualquer modalidade possível do primeiro ou do segundo aspecto.
[087] De acordo com um oitavo aspecto, a invenção diz respeito a um programa de computador compreendendo código de programa para realizar o método de acordo com o primeiro ou segundo aspecto ou qualquer modalidade possível do primeiro ou do segundo aspecto quando executado em um computador.
[088] Detalhes de uma ou mais modalidades são expostos nos desenhos anexos e na descrição a seguir. Outros recursos, objetivos e vantagens estarão aparentes a partir da descrição, desenhos e reivindicações.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[089] No exposto a seguir modalidades da invenção são descritas com mais detalhes com referência para as figuras e desenhos anexos, nos quais: a figura 1A é um diagrama de blocos mostrando um exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção.
[090] A figura 1B é um diagrama de blocos mostrando um outro exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção.
[091] A figura 2 é um diagrama de blocos mostrando um exemplo de um codificador de vídeo configurado para implementar modalidades da invenção.
[092] A figura 3 é um diagrama de blocos mostrando uma estrutura de exemplo de um decodificador de vídeo configurado para implementar modalidades da invenção.
[093] A figura 4 é um diagrama de blocos ilustrando um exemplo de um aparelho de codificação ou de um aparelho de decodificação.
[094] A figura 5 é um diagrama de blocos ilustrando um outro exemplo de um aparelho de codificação ou de um aparelho de decodificação.
[095] A figura 6 é uma apresentação esquemática da função de mapeamento do índice de parâmetro de quantização QPi para o parâmetro de quantização de croma QPc para HEVC (preto, 61) e H.264 | AVC (cinza, 62) de acordo com [2].
[096] A figura 7 é uma apresentação esquemática da função de mapeamento de HEVC do índice de parâmetro de quantização QPi para o parâmetro de quantização de croma QPc para a faixa de Qp suportada, onde 72 é função de mapeamento de HEVC e 71 é função de mapeamento de 1 para 1.
[097] A figura 8 é uma apresentação de tabela da função de mapeamento do índice de parâmetro de quantização QPi para o parâmetro de quantização de croma QPc para HEVC (82) e função de mapeamento modificada (83), a tabela 81 representa função 1 a 1 crescente monasticamente, as tabelas 84, 85, 86 representam diferenças entre valores atuais e anteriores da função 1 a 1 (81), da função de mapeamento de HEVC (82) e da função de mapeamento modificada (83) correspondentemente, onde 87 denota pontos exemplares onde a diferença é zero.
[098] A figura 9 é um exemplo da representação linear por partes 93 da função de mapeamento 92 usando os dois pontos pivôs D (94) e E (95).
[099] A figura 10 é uma apresentação esquemática da função de mapeamento de HEVC do índice de parâmetro de quantização QPi para o parâmetro de quantização de croma QPc para faixa de Qp suportada, onde 102 é função de mapeamento de HEVC com deslocamento de Qp de croma igual a 1 e 101 é função de mapeamento de 1 para 1.
[0100] A figura 11 demonstra tabela de mapeamento de Qp de croma de VVC como uma função de qPi.
[0101] A figura 12 ilustra uma função de mapeamento ajustada de acordo com a presente divulgação.
[0102] A figura 13 ilustra um método de obter um parâmetro de quantização de crominância de acordo com a presente divulgação.
[0103] A figura 14 ilustra um decodificador de acordo com a presente divulgação.
[0104] No exposto a seguir números de referência idênticos se referem a recursos idênticos ou pelo menos equivalentes funcionalmente se não especificado explicitamente de outro modo.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0105] Na descrição seguinte é feita referência para as figuras anexas, as quais formam parte da divulgação e que mostram, a título de ilustração, aspectos específicos de modalidades da invenção ou aspectos específicos nos quais modalidades da presente invenção podem ser usadas. É entendido que modalidades da invenção podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não representadas nas figuras. A descrição detalhada a seguir, portanto, não é para ser considerada com um sentido de limitação, e o escopo da presente invenção é definido pelas reivindicações anexas.
[0106] Por exemplo, é entendido que uma divulgação em conexão com um método descrito também pode se manter 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 específicas de método for descrita, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar a uma ou a pluralidade de etapas de método descritas (por exemplo, uma unidade realizando a uma ou a pluralidade de etapas, ou cada uma da pluralidade de unidades realizando uma ou mais da pluralidade de etapas), mesmo se tal uma ou mais unidades não estiverem descritas ou ilustradas explicitamente nas figuras. Por outro lado, por exemplo, se um aparelho específico for descrito com base em uma ou em uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir uma etapa para realizar a funcionalidade da uma ou da pluralidade de unidades (por exemplo, uma etapa realizando a funcionalidade de uma ou da pluralidade de unidades, ou cada uma da pluralidade de etapas realizando a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tal uma ou pluralidade de etapas não estiver descrita ou ilustrada explicitamente nas figuras.
Adicionalmente, é entendido que os recursos das várias modalidades exemplares e/ou aspectos descritos neste documento podem ser combinados uns com os outros, a não ser que notado especificamente de outro modo.
[0107] Codificação de vídeo tipicamente se refere ao processamento de uma sequência de imagens, as quais formam o vídeo ou sequência de vídeo. Em vez de o termo “cena” o termo “quadro” ou “imagem” pode ser usado como sinônimo no campo de codificação de vídeo. Codificação de vídeo (ou codificação de uma maneira geral) compreende duas partes: codificação de vídeo e decodificação de vídeo. Codificação de vídeo é realizada no lado de fonte, tipicamente compreendendo processamento (por exemplo, por compressão) das imagens de vídeo originais para reduzir a quantidade de dados exigidos para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficiente). Decodificação de vídeo é realizada no lado de destino e tipicamente compreende o processamento inverso quando comparado ao do codificador para reconstruir as imagens de vídeo. Modalidades se referindo à “codificação” de imagens de vídeo (ou imagens de uma maneira geral) devem ser entendidas como se relacionando com “codificação” ou “decodificação” de imagens de vídeo ou de respectivas sequências de vídeo. A combinação de a parte de codificação e a parte de decodificação é também referida como CODEC (Codificação e Decodificação).
[0108] No caso de codificação de vídeo sem perda, as imagens de vídeo originais podem ser reconstruídas, isto é, as imagens de vídeo reconstruídas têm a mesma qualidade das imagens de vídeo originais (assumindo que não existe perda de transmissão ou outra perda de dados durante armazenamento ou transmissão). No caso de codificação de vídeo com perda, compressão adicional, por exemplo, por meio de quantização, é realizada para reduzir a quantidade de dados representando as imagens de vídeo, as quais não podem ser reconstruídas completamente no decodificador, isto é, a qualidade das imagens de vídeo reconstruídas é inferior ou pior quando comparada à qualidade das imagens de vídeo originais.
[0109] Vários padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbridos com perdas” (isto é, combinam predição espacial e temporal no domínio da amostra e codificação de transformação 2D para aplicar quantização no domínio da transformada). Cada imagem de uma sequência de vídeo tipicamente é particionada em um conjunto de blocos não se sobrepondo 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, ao usar predição espacial (dentro de imagem) e/ou predição temporal (entre imagens) para gerar um bloco de predição, subtrair o bloco de predição do bloco atual (bloco processado atualmente/a ser processado) para obter um bloco residual, transformar o bloco residual e quantizar o bloco residual no domínio da transformada para reduzir a quantidade de dados a ser transmitidos (compressão), enquanto que no decodificador o processamento inverso quando comparado ao do codificador é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica o laço de processamento de decodificador de tal maneira que gerará predições idênticas (por exemplo, predições intra e inter) e/ou reconstruções para processar, isto é, codificar, os blocos subsequentes.
[0110] No exposto a seguir modalidades de um sistema de codificação de vídeo 10, de um codificador de vídeo 20 e de um decodificador de vídeo 30 são descritas com base nas figuras 1 a 3.
[0111] A figura 1A é um diagrama de blocos esquemático ilustrando um sistema de codificação de exemplo 10, por exemplo, um sistema de codificação de vídeo 10 (ou resumidamente sistema de codificação 10) que pode utilizar técnicas deste presente pedido. O codificador de vídeo 20 (ou resumidamente codificador 20) e o decodificador de vídeo 30 (ou resumidamente decodificador 30) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar técnicas de acordo com vários exemplos descritos no presente pedido.
[0112] Tal como mostrado na figura 1A, o sistema de codificação 10 compreende um dispositivo de origem 12 configurado para fornecer os dados de imagem codificados 21, por exemplo, para um dispositivo de destino 14 para decodificar os dados de imagem codificados 13.
[0113] O dispositivo de origem 12 compreende um codificador 20, e adicionalmente, isto é, opcionalmente, pode compreender uma fonte de imagens 16, um pré- processador (ou unidade de pré-processamento) 18, por exemplo, um pré-processador de imagens 18 e uma interface de comunicação ou unidade de comunicação 22.
[0114] A fonte de imagens 16 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, uma câmera para capturar uma imagem de mundo real, e/ou qualquer tipo de um dispositivo de geração de imagens, por exemplo, um processador de gráficos de computador para gerar uma imagem animada de computador, ou qualquer tipo de outro dispositivo para obter e/ou fornecer uma imagem de mundo real, uma imagem gerada por computador (por exemplo, um conteúdo de tela, uma imagem de realidade virtual (VR)) e/ou qualquer combinação das mesmas (por exemplo, uma imagem de realidade aumentada (AR)). A fonte de imagens pode ser qualquer tipo de memória ou armazenamento armazenando qualquer uma das imagens mencionadas anteriormente.
[0115] Em distinção ao pré-processador 18 e ao processamento realizado pela unidade de pré-processamento 18, a imagem ou dados de imagem 17 também pode ser referida como imagem bruta ou dados de imagem brutos 17.
[0116] O pré-processador 18 é configurado para receber os dados de imagem (brutos) 17 e para realizar pré- processamento nos dados de imagem 17 para obter uma imagem pré-processada 19 ou os dados de imagem pré-processados 19. Pré-processamento realizado pelo pré-processador 18, por exemplo, pode compreender aparo, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor ou eliminação de ruído. Pode ser entendido que a unidade de pré-processamento 18 pode ser componente opcional.
[0117] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processados 19 e fornecer os dados de imagem codificados 21 (detalhes adicionais serão descritos a seguir, por exemplo, com base na figura 2).
[0118] A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e para transmitir os dados de imagem codificados 21 (ou qualquer versão processada adicionalmente dos mesmos) pelo canal de comunicação 13 para um outro dispositivo, por exemplo, para o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[0119] O dispositivo de destino 14 compreende um decodificador 30 (por exemplo, um decodificador de vídeo 30), e adicionalmente, isto é, opcionalmente, pode compreender uma interface de comunicação ou unidade de comunicação 28, um pós-processador 32 (ou unidade de pós- processamento 32) e um dispositivo de exibição 34.
[0120] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 (ou qualquer versão processada adicionalmente dos mesmos), por exemplo, diretamente do dispositivo de origem 12 ou de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados, e fornecer os dados de imagem codificados 21 para o decodificador 30.
[0121] 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 os dados codificados 13 por meio 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 por meio 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.
[0122] A interface de comunicação 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 21 em um formato apropriado, por exemplo, pacotes, e/ou processar os dados de imagem codificados usando qualquer tipo de codificação de transmissão ou processamento para transmissão em um enlace de comunicação ou rede de comunicação.
[0123] A interface de comunicação 28, formando a contraparte da interface de comunicação 22, pode ser, por exemplo, configurada para receber os dados transmitidos e processar os dados de transmissão usando qualquer tipo de decodificação de transmissão ou processamento e/ou descompactação correspondente para obter os dados de imagem codificados 21.
[0124] Ambas de a interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecional tal como indicado pela seta para o canal de comunicação 13 na figura 1A apontando do dispositivo de origem 12 para o dispositivo de destino 14, ou interfaces de comunicação bidirecional, e podem ser configuradas, por exemplo, para enviar e receber mensagens, por exemplo, para configurar uma conexão, para confirmar e trocar qualquer outra informação relacionada com o enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificados.
[0125] O decodificador 30 é configurado para receber os dados de imagem codificados 21 e fornecer os dados de imagem decodificados 31 ou uma imagem decodificada 31 (detalhes adicionais serão descritos a seguir, por exemplo, com base na figura 3 ou na figura 5).
[0126] O pós-processador 32 do dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também chamados de dados de imagem reconstruídos), por exemplo, a imagem decodificada 31, para obter os dados de imagem pós-processados 33, por exemplo, uma imagem pós-processada 33. O pós-processamento realizado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, aparo, ou reamostragem, ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para exibição, por exemplo, pelo dispositivo de exibição 34.
[0127] O dispositivo de exibição 34 do dispositivo de destino 14 é configurado para receber os dados de imagem pós-processados 33 para exibir a imagem, por exemplo, para um usuário ou espectador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de tela para representar a imagem reconstruída, por exemplo, uma tela ou monitor integrado ou externo. A tela, por exemplo, pode compreender telas de cristal líquido (LCD), telas de diodos orgânicos emissores de luz (OLED), telas de plasma, projetores, telas de micro-LED, cristal líquido em silício (LCoS), processador de luz digital (DLP) ou qualquer tipo de outro mostrador.
[0128] Embora a figura 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, modalidades de dispositivos também podem compreender ambos ou ambas as funcionalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente. Em tais modalidades o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente podem ser implementados usando o mesmo hardware e/ou software ou por meio de hardware e/ou software separado ou qualquer combinação dos mesmos.
[0129] Tal como ficará aparente para uma pessoa versada na técnica com base na descrição, a existência e divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou do dispositivo de destino 14 tais como mostrados na figura 1A podem variar dependendo do dispositivo e aplicação real.
[0130] O codificador 20 (por exemplo, um codificador de vídeo 20) ou o decodificador 30 (por exemplo, um decodificador de vídeo 30) ou ambos de o codificador 20 e o decodificador 30 podem ser implementados por meio de conjunto de circuitos de processamento tal como mostrado na figura 1B, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de portas programáveis em campo (FPGAs), lógica distinta, hardware, codificação de vídeo dedicado ou quaisquer combinações dos mesmos. O codificador 20 pode ser implementado por meio do conjunto de circuitos de processamento 46 para incorporar os vários módulos tais como discutidos em relação ao codificador 20 da figura 2 e/ou qualquer outro sistema ou subsistema codificador descrito neste documento. O decodificador 30 pode ser implementado por meio do conjunto de circuitos de processamento 46 para incorporar os vários módulos tais como discutidos em relação ao decodificador 30 da figura 3 e/ou qualquer outro sistema ou subsistema decodificador descrito neste documento. O conjunto de circuitos de processamento pode ser configurado para realizar as várias operações tais como discutidas a seguir. Tal como mostrado na figura 5, se as técnicas forem implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento não transitório legível por computador adequado e pode executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta divulgação. Um e outro de o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser integrados como parte de um codificador/decodificador (CODEC) combinado em um único dispositivo, por exemplo, tal como mostrado na figura 1B.
[0131] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma faixa ampla de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou estacionários, por exemplo, notebooks ou laptops, telefones móveis, telefones inteligentes, tablets, câmeras, computadores de mesa, aparelhos conversores de sinais, televisões, dispositivos de exibição, reprodutores de mídias digitais, consoles de jogos de computador de vídeo, dispositivos de fluxos contínuos de vídeo (tais como servidores de serviços de conteúdos ou servidores de entrega de conteúdo),
dispositivo receptor de difusão, dispositivo transmissor de difusão, ou similar e podem usar ou não qualquer tipo de sistema operacional. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio. Assim, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[0132] Em alguns casos, o sistema de codificação de vídeo 10 ilustrado na figura 1A é meramente um exemplo e as técnicas do presente pedido podem ser aplicadas para 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 de decodificação. Em outros exemplos, dados são recuperados de uma memória local, transferidos em fluxo contínuo em uma rede ou similar. Um dispositivo de codificação de vídeo pode codificar e armazenar dados em memória, e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados de memória. Em alguns exemplos, a codificação e decodificação são realizadas por dispositivos que não comunicam um com o outro, mas simplesmente codificam dados em memória e/ou recuperam e decodificam dados de memória.
[0133] Por conveniência de descrição, modalidades da invenção são descritas neste documento, por exemplo, por meio de referência para Codificação de Vídeo de Alta Eficiência (HEVC) ou para o software de referência de Codificação de Vídeo Versátil (VVC), o padrão de codificação de vídeo de próxima geração desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo
(JCT-VC) do Grupo de Especialistas em Codificação de Vídeo (VCEG) da ITU-T e do Grupo de Especialistas de Imagens em Movimento (MPEG) da ISO/IEC. Uma pessoa de conhecimento comum na técnica entenderá que modalidades da invenção não estão limitadas a HEVC ou VVC. Codificador e Método de Codificação
[0134] A figura 2 mostra um diagrama de blocos esquemático de um codificador de vídeo de exemplo 20 que é configurado para implementar as técnicas do presente pedido. No exemplo da figura 2, o codificador de vídeo 20 compreende uma entrada 201 (ou interface de entrada 201), 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, uma unidade de filtro de laço 220, um armazenamento temporário (buffer) de imagens decodificadas (DPB) 230, uma unidade de seleção de modo 260, uma unidade de codificação de entropia 270 e uma saída 272 (ou interface de saída 272). A unidade de seleção de modo 260 pode incluir uma unidade de predição inter 244, uma unidade de predição intra 254 e uma unidade de partição
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 tal como mostrado na figura 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.
[0135] A unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208 e a unidade de seleção de modo 260 podem ser referidas como formando um caminho de sinal para frente do codificador 20, enquanto que a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o armazenamento temporário 216, o filtro de laço 220, o armazenamento temporário de imagens decodificadas (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 podem ser referidos como formando um caminho de sinal para trás do codificador de vídeo 20, em que o caminho de sinal para trás do codificador de vídeo 20 corresponde ao caminho de sinal do decodificador (ver o decodificador de vídeo 30 na figura 3). A unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro de laço 220, o armazenamento temporário de imagens decodificadas (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 também são referidos para formar o “decodificador incorporado” do codificador de vídeo 20. Imagens & Partição de Imagens (Imagens & Blocos)
[0136] O codificador 20 pode ser configurado para receber, por exemplo, via entrada 201, uma imagem 17 (ou os dados de imagem 17), por exemplo, imagem de uma sequência de imagens formando um vídeo ou sequência de vídeo. A imagem ou dados de imagem recebidos também pode ser uma imagem pré-processada 19 (ou os dados de imagem pré- processados 19). Para o propósito de simplicidade a descrição a seguir se refere à imagem 17. A imagem 17 também pode ser referida como imagem atual ou imagem a ser codificada (em particular em codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, codificadas anteriormente e/ou imagens decodificadas da mesma sequência de vídeo, isto é, a sequência de vídeo que também compreende a imagem atual).
[0137] Uma imagem (digital) é ou pode ser considerada como um arranjo ou matriz bidimensional 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. Os números de amostras nas direções (ou eixos) horizontal e vertical do arranjo ou imagem definem o tamanho e/ou resolução da imagem. Para representação de cor, tipicamente três componentes de cor são empregados, isto é, a imagem pode ser representada ou incluir três arranjos de amostras. No formato ou espaço de cores RGB uma imagem compreende um arranjo de amostras de vermelho, verde e azul correspondentes. Entretanto, em codificação de vídeo cada pixel tipicamente é representado em um formato ou espaço de cores de luminância e crominância, por exemplo, YCbCr, o qual compreende um componente de luminância indicado por Y (algumas vezes L também é usado em vez de Y) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou resumidamente luma) Y representa o brilho ou intensidade de nível de cinza (por exemplo, tal como em uma imagem de escala de cinza), enquanto que os dois componentes de crominância (ou resumidamente croma) Cb e Cr representam a cromaticidade ou componentes de informação de cor. Portanto, uma imagem no formato YCbCr compreende um arranjo de amostras de luminância de valores de amostras de luminância (Y), e dois arranjos de amostras de crominância de valores de crominância (Cb e Cr). Imagens no formato RGB podem ser convertidas ou transformadas para o formato YCbCr e vice-versa, e o processo é também conhecido como transformação ou conversão de cor. Se uma imagem for monocromática, a imagem pode compreender somente um arranjo de amostras de luminância. Portanto, uma imagem pode ser, por exemplo, um arranjo de amostras de luma no formato monocromático ou um arranjo de amostras de luma e dois arranjos correspondentes de amostras de croma no formato de cor 4:2:0, 4:2:2 e 4:4:4.
[0138] Modalidades do codificador de vídeo 20 podem compreender uma unidade de partição de imagem (não representada na figura 2) configurada para particionar a imagem 17 em uma pluralidade (tipicamente não se sobrepondo) dos blocos de imagem 203. Estes blocos também podem ser referidos como blocos raízes, macroblocos (H.264/AVC) ou blocos de árvore de codificação (CTB) ou unidades de árvore de codificação (CTU) (H.265/HEVC e VVC). A unidade de partição de imagem pode ser configurada para usar o mesmo tamanho de bloco para todas as imagens de uma sequência de vídeo e a malha correspondente definindo 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.
[0139] Em modalidades adicionais, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, vários ou todos os blocos formando a imagem 17. O bloco de imagem 203 também pode ser referido como bloco de imagem atual ou bloco de imagem a ser codificado.
[0140] Tal como a imagem 17, o bloco de imagem 203 de novo é ou pode ser considerado como um arranjo ou matriz bidimensional de amostras com valores de intensidade (valores de amostras), contudo de dimensão menor que a da imagem 17. Em outras palavras, o bloco 203 pode compreender, por exemplo, um arranjo de amostras (por exemplo, um arranjo de luma no caso de uma imagem monocromática 17, ou um arranjo de luma ou de croma no caso de uma imagem colorida) ou três arranjos de amostras (por exemplo, um arranjo de luma e dois de croma no caso de uma imagem colorida 17) ou qualquer outro número e/ou tipo de arranjos dependendo do formato de cor aplicado. O número de amostras nas direções (ou eixos) horizontal e vertical do bloco 203 define o tamanho do bloco 203. Portanto, um bloco, por exemplo, pode ter um arranjo MxN (M colunas por N linhas) de amostras, ou um arranjo MxN de coeficientes de transformada.
[0141] Modalidades do codificador de vídeo 20 tal como mostrado na figura 2 podem ser configuradas para codificar a imagem 17 bloco pelo bloco, por exemplo, a codificação e predição são realizadas por bloco 203.
[0142] Modalidades do codificador de vídeo 20 tal como mostrado na figura 2 podem ser configuradas adicionalmente para particionar e/ou codificar a imagem ao usar fatias (também referidas como fatias de vídeo), em que uma imagem pode ser particionada ou codificada usando uma ou mais fatias (tipicamente não se sobrepondo), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs).
[0143] Modalidades do codificador de vídeo 20 tal como mostrado na figura 2 podem ser configuradas adicionalmente para particionar e/ou codificar a imagem ao usar grupos de peças (também referidos como grupos de peças de vídeo) e/ou peças (também referidas como peças de vídeo), em que uma imagem pode ser particionada ou codificada usando um ou mais grupos de peças (tipicamente não se sobrepondo), e cada grupo de peças pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou uma ou mais peças, em que cada peça, por exemplo, pode ser de forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionários. Cálculo Residual
[0144] A unidade de cálculo residual 204 pode ser configurada para calcular um bloco residual 205 (também referido como o residual 205) com base no bloco de imagem 203 e em um bloco de predição 265 (detalhes adicionais a respeito do bloco de predição 265 são fornecidos a seguir), por exemplo, ao subtrair valores de amostras do bloco de predição 265 de valores de amostras do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio da amostra. Transformada
[0145] A unidade de processamento de transformada 206 pode ser configurada para aplicar uma transformada, por exemplo, uma transformada discreta de cosseno (DCT) ou transformada discreta de seno (DST), nos valores de amostras do bloco residual 205 para obter os coeficientes de transformada 207 em um domínio da 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 da transformada.
[0146] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações de números inteiros de DCT/DST, tais como as transformadas especificadas para H.265/HEVC. Comparadas a uma transformada DCT ortogonal, tais aproximações de números inteiros tipicamente são escaladas por um certo fator. A fim de preservar a norma do bloco residual que é processado por meio de transformadas para frente e inversa, fatores de escala adicionais são aplicados como parte do processo de transformada. Os fatores de escala tipicamente são escolhidos com base em certas restrições tais como fatores de escala sendo uma potência de dois para operações de mudança, profundidade de bits dos coeficientes de transformada, troca compensatória entre precisão e custos de implementação, etc. Fatores de escala específicos, por exemplo, são especificados para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212 (e a transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 312 no decodificador de vídeo 30) e fatores de escala correspondentes para a transformada para frente, por exemplo, pela unidade de processamento de transformada 206, em um codificador 20 podem ser especificados de modo correspondente.
[0147] Modalidades do codificador de vídeo 20 (correspondentemente a unidade de processamento de transformada 206) podem ser configuradas para produzir parâmetros de transformada, por exemplo, um tipo de transformada ou transformadas, por exemplo, diretamente ou codificados ou comprimidos por meio da unidade de codificação de entropia 270, de maneira que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de transformada para decodificação. Quantização
[0148] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformada 207 para obter os coeficientes quantizados 209, por exemplo, ao aplicar quantização escalar ou quantização de vetor. Os coeficientes quantizados 209 também podem ser referidos como os coeficientes de transformada quantizados 209 ou os coeficientes residuais quantizados 209.
[0149] O processo de quantização pode reduzir a profundidade de bits associada com todos ou com alguns dos coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n bits pode ser arredondado para baixo para um coeficiente de transformada de m bits durante quantização, onde n é maior que m. O grau de quantização pode ser modificado ao ajustar um parâmetro de quantização (QP). Por exemplo, para quantização escalar, escalamento diferente pode ser aplicado para alcançar quantização mais refinada ou mais grosseira. Tamanhos de etapas de quantização menores correspondem à quantização mais refinada, enquanto que tamanhos de etapas de quantização maiores correspondem à quantização mais grosseira. O tamanho de etapa de quantização aplicável pode ser indicado por um parâmetro de quantização (QP). O parâmetro de quantização, por exemplo, pode ser um índice para um conjunto predefinido de tamanhos de etapas de quantização aplicáveis. Por exemplo, parâmetros de quantização pequenos podem corresponder à quantização fina (tamanhos de etapas de quantização pequenos) e parâmetros de quantização grandes podem corresponder à quantização grosseira (tamanhos de etapas de quantização grandes) ou vice-versa. A quantização pode incluir divisão por um tamanho de etapa de quantização e uma desquantização correspondente e/ou a inversa, por exemplo, pela unidade de quantização inversa 210, pode incluir multiplicação pelo tamanho de etapa de quantização. Modalidades de acordo com alguns padrões, por exemplo, HEVC, podem ser configuradas para usar um parâmetro de quantização para determinar o tamanho de etapa de quantização. De uma maneira geral, o tamanho de etapa de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação incluindo divisão. Fatores de escala adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, o qual pode se tornar modificado pelo escalamento usado na aproximação de ponto fixo da equação para tamanho de etapa de quantização e parâmetro de quantização. Em uma implementação de exemplo, o escalamento da transformada inversa e desquantização podem ser combinados. Alternativamente, tabelas de quantização personalizadas podem ser usadas e sinalizadas de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perda, em que a perda aumenta com tamanhos de etapas de quantização crescentes.
[0150] Um nível de compressão de imagem é controlado por parâmetro de quantização (QP) que pode ser fixado para a imagem inteira (por exemplo, ao usar um mesmo valor de parâmetro de quantização), ou pode ter valores de parâmetros de quantização diferentes para regiões diferentes da imagem.
[0151] Para vídeo 4:2:0 e 4:2:2 YCbCr, as características de sinal de luma e os componentes de croma são completamente diferentes. Especificamente, croma frequentemente exibe uma natureza de passa-baixa forte. Se quantização forte for aplicada, a informação de croma pode ser quantizada completamente para zero, o que resultaria na completa perda de cor. Portanto, a fim de reduzir isto o tamanho de etapa de quantização para croma é adaptado ao reduzir o tamanho de etapa de quantização de croma para valores de QP altos [2].
[0152] No padrão de Codificação de Vídeo de Alta Eficiência (HEVC) tal como especificado em [1], o parâmetro de quantização de croma QPc é derivado pela Tabela 1, onde qPi é igual ao parâmetro de quantização de luma associado mais o valor de deslocamento de QP de croma sinalizado no conjunto de parâmetros de imagem (PPS) e/ou no cabeçalho de fatia. A derivação de valor de QP de croma do valor de QP de luma associado pode ser ajustada ao sinalizar valores de deslocamentos de QP de croma diferentes. Um valor de deslocamento de QP de croma positivo resultará em um quantizador mais grosseiro para o componente de croma associado. Tabela 1: Especificação de QpC como uma função de qPi em HEVC como um exemplo 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 35 35 35 36 36 37 37 = qPi − 6
[0153] Apresentação esquemática do mapeamento do índice de parâmetro de quantização QPi para o parâmetro de quantização de croma QPc para HEVC (preto) e H.264 | AVC (cinza) é apresentada na figura 6 de acordo com [2].
[0154] No padrão HEVC, um valor de QP para bloco de codificação (CB) de Luminância (ou Luma) é derivado com base em QP Predito (qPY_PRED), o qual por sua vez depende de localização de CB em quadro/fatia/peça. Então QpY variável é derivado pela Equação 1 seguinte: QpY = ((qPYPRED + CuQpDeltaVal + 64 + 2*QpBdOffsetY) % (64 + QpBdOffsetY)) – QpBdOffsetY (Equação 1).
[0155] Em que CuQpDeltaVal é um valor de QP de delta que é sinalizado ou derivado para uma unidade de codificação (CU); QpBdOffsetY é um deslocamento constante dependente de profundidade de bits de Luma (no padrão HEVC, este termo corresponde a “a profundidade de bits das amostras do arranjo de luma”). Finalmente, o parâmetro de quantização Qp’Y do componente de Luminância (ou Luma) pode ser calculado pela Equação 2 seguinte: Qp’Y = QpY + QpBdOffsetY (Equação 2).
[0156] As variáveis qPCb e qPCr são estabelecidas iguais ao valor de QpC tal como especificado em uma tabela de mapeamento (por exemplo, na Tabela 1) com base no índice qPi igual a qPiCb ou qPiCr, respectivamente, e qPiCb e qPiCr são derivados como se segue pela Equação 3: qPiCb = Clip3( -QpBdOffsetC,69,QpY + pps_cb_qp_offset + slice_cb_qp_offset ) qPiCr = Clip3( -QpBdOffsetC,69,QpY + pps_cr_qp_offset + slice_cr_qp_offset ) (Equação 3).
[0157] Em que QpBdOffsetC é um deslocamento constante dependente de profundidade de bits de Croma (no padrão HEVC, este termo corresponde a “a profundidade de bits das amostras do arranjo de Croma”); pps_cb_qp_offset ou pps_cr_qp_offset é um deslocamento fixado para componente Cb ou componente Cr sinalizado por um conjunto de parâmetros de imagem (PPS), e slice_cb_qp_offset ou slice_cr_qp_offset é um deslocamento fixado para 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
[0158] Os parâmetros de quantização de Croma para os componentes Cb e Cr (Qp’Cb e Qp’Cr) são derivados como se segue pela Equação 5: Qp’Cb = qPCb + QpBdOffsetC Qp’Cr = qPCr + QpBdOffsetC (Equação 5).
[0159] As variáveis qPCb e qPCr são estabelecidas iguais ao valor de QpC tal como especificado na Tabela 1 com base no índice qPi igual a qPiCb e qPiCr, respectivamente.
[0160] VVC é um padrão em desenvolvimento recentemente na versão preliminar de especificação 5 que contém o seguinte procedimento para derivar parâmetro de quantização de croma: - quando treeType é igual a DUAL_TREE_CHROMA, a variável QpY é estabelecida igual ao parâmetro de quantização de luma QpY da unidade de codificação de luma que cobre a localização de luma ( xCb + cbWidth / 2, yCb + cbHeight / 2 ); - as variáveis qPCb, qPCr e qPCbCr são derivadas tal como a seguir: qPiCb = Clip3( −QpBdOffsetC, 69, QpY + pps_cb_qp_offse t + slice_cb_qp_offset ) (8-926) qPiCr = Clip3( −QpBdOffsetC, 69, QpY + pps_cr_qp_offse t + slice_cr_qp_offset ) (8-927) qPiCbCr = Clip3( −QpBdOffsetC, 69, QpY + pps_joint_cbcr _qp_offset + slice_joint_cbcr_qp_offset ) (8-928) - se ChromaArrayType for igual a 1, as variáveis qPCb, qPCr e qPCbCr são estabelecidas iguais ao valor de QpC tal como especificado em Qp’CbCr = qPCbCr + QpBdOffsetC (8-931) Tabela 2 com base no índice qPi igual a qPiCb, qPiCr e qPiCbCr, respectivamente; - de outro modo, as variáveis qPCb, qPCr e qPCbCr são estabelecidas iguais a Mín( qPi, 63 ), com base no índice qPi igual a qPiCb, qPiCr e qPiCbCr, respectivamente; - os parâmetros de quantização de croma para os componentes Cb e Cr, Qp’Cb e Qp’Cr, e codificação de Cb-Cr de junção Qp’CbCr são derivados tal como a seguir: Qp’Cb = qPCb + QpBdOffsetC (8-929) Qp’Cr = qPCr + QpBdOffsetC (8-930) Qp’CbCr = qPCbCr + QpBdOffsetC (8-931). Tabela 2 - especificação de QpC como uma função de qPi para ChromaArrayType igual a 1 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
[0161] Onde pps_cb_qp_offset e slice_cb_qp_offset são valores de deslocamentos de QP de croma de nível de imagem e nível de fatia sinalizados no conjunto de parâmetros de imagem (PPS) e/ou no cabeçalho de fatia correspondentemente.
[0162] Uma vez que eficiência de compressão de croma tem sido melhorada significativamente em VVC por incluir ferramentas dedicadas de codificação de croma tais como árvore de separação de croma e CCLM, a função de mapeamento de QP de croma pode exigir ajuste.
[0163] Pode ser visto que a mesma tabela de mapeamento de QP de croma (Tabela 2) do padrão HEVC (Tabela 1) é usada. Em contraste com HEVC Qp’CbCr é introduzido além de Qp’Cb e Qp’Cr para derivar parâmetros de quantização para os blocos onde componentes Cb e Cr de cor são quantizados conjuntamente. Este parâmetro Qp’CbCr é também derivado com base em função de mapeamento de QP de croma especificada na Tabela 2.
[0164] Tal como descrito acima, a derivação de valor de QP de croma do valor de QP de luma associado pode ser ajustada ao sinalizar valores de deslocamentos de QP de croma diferentes. Um valor de deslocamento de QP de croma positivo resultará em um quantizador mais grosseiro para o componente de croma associado. A figura 10 ilustra um exemplo da função de mapeamento de QP de croma de HEVC/VVC com deslocamento de Qp de croma igual a 1.
[0165] Modalidades do codificador de vídeo 20 (correspondentemente a unidade de quantização 208) podem ser configuradas para produzir parâmetros de quantização (QP), por exemplo, diretamente ou codificados por meio da unidade de codificação de entropia 270, de maneira que, por exemplo, o decodificador de vídeo 30 pode receber e aplicar os parâmetros de quantização para decodificação. Quantização Inversa
[0166] 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, ao aplicar o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base ou usando o mesmo tamanho de etapa de quantização que o da unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como os coeficientes residuais desquantizados 211 e correspondem - embora tipicamente não idênticos aos coeficientes de transformada pela perda por quantização - aos coeficientes de transformada 207. Transformada Inversa
[0167] A unidade de processamento de transformada inversa 212 é configurada para aplicar a transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada inversa discreta de cosseno (DCT) ou transformada inversa discreta de seno (DST) ou outras transformadas inversas, para obter um bloco residual reconstruído 213 (ou os coeficientes desquantizados 213 correspondentes) no domínio da amostra. O bloco residual reconstruído 213 também pode ser referido como bloco de transformada 213. Reconstrução
[0168] A unidade de reconstrução 214 (por exemplo, o adicionador ou somador 214) é configurada para adicionar o bloco de transformada 213 (isto é, bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio da amostra, por exemplo, ao somar - amostra por amostra - os valores de amostras do bloco residual reconstruído 213 e os valores de amostras do bloco de predição 265. Filtragem
[0169] A unidade de filtro de laço 220 (ou resumidamente o “filtro de laço” 220) é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221, ou de uma maneira geral para filtrar amostras reconstruídas para obter amostras filtradas. A unidade de filtro de laço, por exemplo, é configurada para suavizar transições de pixels, ou melhorar de outro modo a qualidade de vídeo. A unidade de filtro de laço 220 pode compreender um ou mais filtros de laço tais como um filtro de desblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro de laço adaptativo (ALF), um filtro de nitidez, um filtro de suavização ou um filtro colaborativo ou qualquer combinação dos mesmos. Embora a unidade de filtro de laço 220 esteja mostrada na figura 2 como sendo um filtro dentro de laço, em outras configurações a unidade de filtro de laço 220 pode ser implementada como um filtro pós-laço. O bloco filtrado 221 também pode ser referido como o bloco reconstruído filtrado
221.
[0170] Modalidades do codificador de vídeo 20 (correspondentemente a unidade de filtro de laço 220) podem ser configuradas para produzir parâmetros de filtro de laço
(tal como informação de deslocamento adaptativo de amostra), por exemplo, diretamente ou codificados por meio da unidade de codificação de entropia 270, de maneira que, por exemplo, um decodificador 30 pode receber e aplicar os mesmos parâmetros de filtro de laço ou os respectivos filtros de laço para decodificação. Armazenamento Temporário de Imagens Decodificadas
[0171] O armazenamento temporário (buffer) de imagens decodificadas (DPB) 230 pode ser uma memória que armazena imagens de referência, ou de uma maneira geral dados de imagens de referência, para codificar dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por meio de qualquer um de uma variedade de dispositivos de memória, tal como memória dinâmica de acesso aleatório (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. O armazenamento temporário de imagens decodificadas (DPB) 230 pode ser configurado para armazenar um ou mais blocos filtrados 221. O armazenamento temporário de imagens decodificadas 230 pode ser configurado adicionalmente para armazenar outros blocos filtrados anteriormente, por exemplo, os blocos reconstruídos e filtrados anteriormente 221, da mesma imagem atual ou de imagens diferentes, por exemplo, imagens reconstruídas anteriormente, e pode fornecer imagens reconstruídas, isto é, decodificadas, anteriormente completas (e blocos e amostras de referência correspondentes) e/ou uma imagem atual reconstruída parcialmente (e blocos e amostras de referência correspondentes), por exemplo, para predição inter. O armazenamento temporário de imagens decodificadas (DPB) 230 também pode ser configurado para armazenar um ou mais blocos reconstruídos não filtrados 215, ou de uma maneira geral amostras reconstruídas não filtradas, por exemplo, se o bloco reconstruído 215 não for filtrado pela unidade de filtro de laço 220, ou qualquer outra versão processada adicionalmente dos blocos ou amostras reconstruídos. Seleção de Modo (Partição & Predição)
[0172] A unidade de seleção de modo 260 compreende a unidade de partição 262, a unidade de predição inter 244 e a unidade de predição intra 254, e é configurada para receber ou obter dados de imagem original, por exemplo, um bloco original 203 (o bloco atual 203 da imagem atual 17), e dados de imagem reconstruídos, por exemplo, amostras ou blocos reconstruídos filtrados e/ou não filtrados da mesma imagem (atual) e/ou de uma ou de uma pluralidade de imagens decodificadas anteriormente, por exemplo, do armazenamento temporário de imagens decodificadas 230 ou de outros armazenamentos temporários (por exemplo, armazenamento temporário de linha, não mostrado). Os dados de imagem reconstruídos são usados como dados de imagem de referência para predição, por exemplo, predição inter ou predição intra, para obter um bloco de predição 265 ou o preditor
265.
[0173] A unidade de seleção de modo 260 pode ser configurada para determinar ou selecionar uma partição para um modo de predição de bloco atual (incluindo sem partição) e um modo de predição (por exemplo, um modo predição intra ou inter) e gerar um bloco de predição correspondente 265, o qual é usado para o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído 215.
[0174] Modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar a partição e o modo de predição (por exemplo, daqueles suportados ou disponíveis para a unidade de seleção de modo 260) que fornecem o melhor casamento ou, em outras palavras, o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento), ou uma sobrecarga de sinalização mínima (sobrecarga de sinalização mínima significa melhor compressão para transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo 260 pode ser configurada para determinar a partição e modo de predição com base em otimização de distorção de taxa (RDO), isto é, selecionar o modo de predição que fornece uma distorção de taxa mínima. Termos tais como “melhor”, “mínimo”, “ideal”, etc. neste contexto não se referem necessariamente a um total “melhor”, “mínimo”, “ideal”, etc., mas também podem se referir ao cumprimento de um critério de terminação ou de seleção tal como um valor excedendo ou estando abaixo de um limiar ou de outras restrições resultando potencialmente em uma “seleção subideal”, mas reduzindo complexidade e tempo de processamento.
[0175] Em outras palavras, a unidade de partição 262 pode ser configurada para particionar o bloco 203 em partições de bloco ou sub-blocos menores (o que de novo forma blocos), por exemplo, iterativamente usando partição de árvore quaternária (QT), partição binária (BT) ou partição de árvore tripla (TT) ou qualquer combinação das mesmas, e para realizar, por exemplo, a predição para cada uma das partições de bloco ou sub-blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e os modos de predição são aplicados para cada uma das partições de bloco ou sub-blocos.
[0176] No exposto a seguir a partição (por exemplo, pela unidade de partição 260) e o processamento de predição (pela unidade de predição inter 244 e pela unidade de predição intra 254), realizados por um codificador de vídeo de exemplo 20, serão explicados com mais detalhes. Partição
[0177] A unidade de partição 262 pode particionar (ou dividir) um bloco atual 203 em partições menores, por exemplo, em blocos menores quadrados ou retangulares. Estes blocos menores (que também podem ser referidos como sub- blocos) podem ser particionados adicionalmente em partições ainda menores. Isto é também referido como partição de árvore ou partição de árvore hierárquica, em que um bloco raiz, por exemplo, no nível de árvore de raiz 0 (nível de hierarquia 0, profundidade 0), pode ser particionado de modo repetitivo, por exemplo, particionado em dois ou mais blocos de um próximo nível de árvore inferior, por exemplo, nós no nível de árvore 1 (nível de hierarquia 1, profundidade 1), em que estes blocos podem ser particionados de novo em dois ou mais blocos de um próximo nível inferior, por exemplo, o nível de árvore 2 (nível de hierarquia 2, profundidade 2), etc. até que a partição seja terminada, por exemplo, porque um critério de terminação é cumprido, 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 são também referidos como blocos folhas ou nós folhas da árvore. Uma árvore usando divisão em duas partições é referida como árvore binária (BT), uma árvore usando divisão em três partições é referida como árvore ternária (TT), e uma árvore usando divisão em quatro partições é referida como árvore quaternária (QT).
[0178] Tal como mencionado anteriormente, o termo “bloco” tal como usado neste documento pode ser uma parte, em particular uma parte quadrada ou retangular, de uma imagem. Com referência, por exemplo, para HEVC e VVC, o bloco pode ser ou corresponder a uma unidade de árvore de codificação (CTU), uma unidade de codificação (CU), unidade de predição (PU), e unidade de transformação (TU) e/ou aos blocos correspondentes, por exemplo, um bloco de árvore de codificação (CTB), um bloco de codificação (CB), um bloco de transformada (TB) ou bloco de predição (PB).
[0179] 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 amostras, ou um CTB de amostras de uma imagem monocromática ou de uma imagem que é codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco NxN de amostras para algum valor de N de tal maneira que a divisão de um componente em CTBs é uma partição. 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 amostras, ou um bloco de codificação de amostras de uma imagem monocromática ou de uma imagem que é codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente um bloco de codificação (CB) pode ser um bloco MxN de amostras para alguns valores de M e N de tal maneira que a divisão de um CTB em blocos de codificação é uma partição.
[0180] Em modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs ao usar uma estrutura de árvore quaternária denotada como árvore de codificação. A decisão se é para codificar uma área de imagem usando predição entre imagens (temporal) ou dentro de imagem (espacial) é tomada 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 a informação pertinente é transmitida para o decodificador em uma base de PU. Após obter o bloco residual ao aplicar o processo de predição baseado no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformada (TUs) de acordo com uma outra estrutura de árvore quaternária similar à árvore de codificação para a CU.
[0181] Em modalidades, por exemplo, de acordo com o padrão de codificação de vídeo mais recente atualmente em desenvolvimento, o qual é referido como Codificação de Vídeo Versátil (VVC), uma partição de árvore quaternária e árvore binária combinada (QTBT), por exemplo, é usada para particionar um bloco de codificação. Na estrutura de bloco de QTBT, uma CU pode ter uma forma quadrada ou retangular.
Por exemplo, uma unidade de árvore de codificação (CTU) é primeiro particionada por meio de uma estrutura de árvore quaternária. Os nós folhas de árvore quaternária são particionados adicionalmente por meio de uma estrutura de árvore binária ou de árvore ternária (ou tripla). Os nós folhas de árvore de partição são chamados de unidades de codificação (CUs), e essa segmentação é usada para processamento de predição e transformação sem qualquer partição adicional. Isto significa que a CU, PU e a TU têm o mesmo tamanho de bloco na estrutura de bloco de codificação de QTBT. Em paralelo, partição múltipla, por exemplo, partição de árvore tripla, pode ser usada juntamente com a estrutura de bloco de QTBT.
[0182] Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de partição descritas neste documento.
[0183] Tal como descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor ou um modo de predição ideal de um conjunto de modos de predição (por exemplo, predeterminados). O conjunto de modos de predição pode compreender, por exemplo, modos de predição intra e/ou modos de predição inter. Predição Intra
[0184] O conjunto de modos de predição intra pode compreender 35 modos de predição intra diferentes, por exemplo, modos não direcionais tais como modo DC (ou de média) e modo plano, ou modos direcionais, por exemplo, tal como definido em HEVC, ou pode compreender 67 modos de predição intra diferentes, por exemplo, modos não direcionais tais como modo DC (ou de média) e modo plano, ou modos direcionais, por exemplo, tal como definido para VVC.
[0185] A unidade de predição intra 254 é configurada para usar amostras reconstruídas de blocos vizinhos da mesma imagem atual para gerar um bloco de predição intra 265 de acordo com um modo de predição intra do conjunto de modos de predição intra.
[0186] A unidade de predição intra 254 (ou de uma maneira geral a unidade de seleção de modo 260) é configurada adicionalmente para enviar parâmetros de predição intra (ou de uma maneira geral informação indicativa do modo de predição intra selecionado para o bloco) para a unidade de codificação de entropia 270 na forma dos elementos de sintaxe 266 para inclusão nos dados de imagem codificados 21, de maneira que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de predição para decodificação. Predição Inter
[0187] O conjunto de (ou possíveis) modos de predição inter depende (ou dependem) das imagens de referência disponíveis (isto é, imagens decodificadas pelo menos parcialmente anteriores, por exemplo, armazenadas no DBP 230) e de outros parâmetros de predição inter, por exemplo, se a imagem de referência inteira ou se somente uma parte, por exemplo, uma área de janela de pesquisa em volta da área do bloco atual, da imagem de referência é usada para procurar um bloco de referência de melhor casamento, e/ou, por exemplo, se interpolação de pixel é aplicada, por exemplo, interpolação de metade/semipixel e/ou de quarto de pixel, ou não.
[0188] Além dos modos de predição indicados acima, modo de salto e/ou modo direto pode ser aplicado.
[0189] A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na figura 2). A unidade de estimativa de movimento pode ser configurada para receber ou obter o bloco de imagem 203 (o bloco de imagem atual 203 da imagem atual 17) e uma imagem decodificada 231, ou pelo menos um ou uma pluralidade de blocos reconstruídos anteriormente, por exemplo, blocos reconstruídos de uma ou de uma pluralidade de outras/diferentes imagens decodificadas anteriormente 231, para estimativa de movimento. Por exemplo, uma sequência de vídeo pode compreender a imagem atual e as imagens decodificadas anteriormente 231, ou em outras palavras a imagem atual e as imagens decodificadas anteriormente 231 podem ser parte ou podem formar uma sequência de imagens formando uma sequência de vídeo.
[0190] O codificador 20, por exemplo, pode ser configurado para selecionar um bloco de referência de uma pluralidade de blocos de referência da mesma ou de imagens diferentes da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência) e/ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e a posição do bloco atual como parâmetros de predição inter para a unidade de estimativa de movimento. Este deslocamento é também chamado de vetor de movimento (MV).
[0191] A unidade de compensação de movimento é configurada para obter, por exemplo, receber, um parâmetro de predição inter e para realizar predição inter com base no parâmetro de predição inter ou usando o mesmo para obter um bloco de predição inter 265. Compensação de movimento, realizada pela unidade de compensação de movimento, pode envolver recuperar ou gerar o bloco de predição com base no vetor de movimento/bloco determinado por meio de estimativa de movimento, possivelmente realizando interpolações para precisão de subpixel. Filtragem de interpolação pode gerar amostras de pixels adicionais de amostras de pixels conhecidos, potencialmente aumentando assim o número de blocos de predição candidatos que podem ser usados para codificar um bloco de imagem. Ao receber o vetor de movimento para a PU do bloco de imagem atual, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagens de referência.
[0192] A unidade de compensação de movimento também pode gerar elementos de sintaxe associados com os blocos e fatias de vídeo para uso pelo decodificador de vídeo 30 ao decodificar os blocos de imagem da fatia de vídeo. Adicionalmente ou como uma alternativa para fatias e respectivos elementos de sintaxe, grupos de peças e/ou peças e respectivos elementos de sintaxe podem ser gerados ou usados. Codificação de Entropia
[0193] A unidade de codificação de entropia 270 é configurada para aplicar, por exemplo, um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema de
VLC adaptativa de contexto (CAVLC), um esquema de codificação aritmética, uma binarização, uma codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), codificação de entropia de partição de intervalo de probabilidade (PIPE) ou uma outra metodologia ou técnica de codificação de entropia) ou desvio (sem compressão) nos coeficientes quantizados 209, parâmetros de predição inter, parâmetros de predição intra, parâmetros de filtro de laço e/ou em outros elementos de sintaxe para obter os dados de imagem codificados 21 que podem ser enviados por meio da saída 272, por exemplo, na forma de um fluxo de bits codificados 21, de maneira que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros para decodificação. O fluxo de bits codificados 21 pode ser transmitido para o decodificador de vídeo 30, ou armazenado em uma memória para transmissão ou recuperação a seguir pelo decodificador de vídeo 30.
[0194] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador baseado em não transformada 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para certos blocos ou quadros. Em uma 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. Decodificador e Método de Decodificação
[0195] A figura 3 mostra um exemplo de um decodificador de vídeo 30 que é configurado para implementar as técnicas deste presente pedido. O decodificador de vídeo 30 é configurado para receber os dados de imagem codificados 21 (por exemplo, o fluxo de bits codificados 21), por exemplo, codificados pelo codificador 20, para obter uma imagem decodificada 331. Os dados de imagem ou fluxo de bits codificados compreendem informação para decodificar os dados de imagem codificados, por exemplo, dados que representam blocos de imagem de uma fatia de vídeo codificada (e/ou grupos de peças ou peças) e elementos de sintaxe associados.
[0196] No exemplo da figura 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 somador 314), um filtro de laço 320, um armazenamento temporário (buffer) de imagens decodificadas (DBP) 330, uma unidade de aplicação de modo 360, uma unidade de predição inter 344 e uma unidade de predição intra 354. A unidade de predição inter 344 pode ser ou incluir uma unidade de compensação de movimento. O decodificador de vídeo 30, em alguns exemplos, pode realizar uma passagem de decodificação de uma maneira geral recíproca à passagem de codificação descrita em relação ao codificador de vídeo 100 da figura 2.
[0197] Tal como explicado com relação ao codificador 20, a unidade de quantização inversa 310, a unidade de processamento de transformada inversa 312, a unidade de reconstrução 314, o filtro de laço 320, o armazenamento temporário de imagens decodificadas (DPB) 330, a unidade de predição inter 344 e a unidade de predição intra 354 são também referidos como formando o “decodificador incorporado” do codificador de vídeo 20. Portanto, a unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 210, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 212, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, o filtro de laço 320 pode ser idêntico em função ao filtro de laço 220, e o armazenamento temporário de imagens decodificadas 330 pode ser idêntico em função ao armazenamento temporário de imagens decodificadas 230. Portanto, as explicações fornecidas para as respectivas unidades e funções do codificador de vídeo 20 se aplicam correspondentemente às respectivas unidades e funções do decodificador de vídeo 30. Decodificação de Entropia
[0198] A unidade de decodificação de entropia 304 é configurada para analisar o fluxo de bits 21 (ou de uma maneira geral os dados de imagem codificados 21) e realizar, por exemplo, decodificação de entropia para os dados de imagem codificados 21 para obter, por exemplo, os coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrados na figura 3), por exemplo, alguns ou todos os parâmetros de predição inter (por exemplo, índice de imagem de referência e vetor de movimento), parâmetro de predição intra (por exemplo, modo ou índice de predição intra), parâmetros de transformada, parâmetros de quantização, parâmetros de filtro de laço, e/ou outros elementos de sintaxe. A unidade de decodificação de entropia 304 pode ser configurada para aplicar os algoritmos ou esquemas de decodificação correspondendo aos esquemas de codificação tais como descritos com relação à unidade de codificação de entropia 270 do codificador 20. A unidade de decodificação de entropia 304 pode ser configurada adicionalmente para fornecer parâmetros de predição inter, parâmetros de predição intra e/ou outros elementos de sintaxe para a unidade de aplicação de modo 360 e outros parâmetros para outras unidades do decodificador 30. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo. Adicionalmente ou como uma alternativa para fatias e respectivos elementos de sintaxe, grupos de peças e/ou peças e respectivos elementos de sintaxe podem ser recebidos e/ou usados. Quantização Inversa
[0199] A unidade de quantização inversa 310 pode ser configurada para receber parâmetros de quantização (QP) (ou de uma maneira geral informação relacionada com a quantização inversa) e coeficientes quantizados dos dados de imagem codificados 21 (por exemplo, ao analisar e/ou decodificar, por exemplo, pela unidade de decodificação de entropia 304) e para aplicar com base nos parâmetros de quantização uma quantização inversa nos coeficientes quantizados decodificados 309 para obter os coeficientes desquantizados 311, os quais também pode ser referidos como os coeficientes de transformada 311. O processo de quantização inversa pode incluir uso de um parâmetro de quantização determinado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo (ou peça ou grupo de peças) para determinar um grau de quantização e, igualmente, um grau de quantização inversa que deve ser aplicado. Transformada Inversa
[0200] A unidade de processamento de transformada inversa 312 pode ser configurada para receber os coeficientes desquantizados 311, também referidos como os coeficientes de transformada 311, e para aplicar uma transformada aos coeficientes desquantizados 311 a fim de obter os blocos residuais reconstruídos 313 no domínio da amostra. Os blocos residuais reconstruídos 313 também podem ser referidos como os blocos de transformada 313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada inteira inversa, ou um processo de transformada inversa similar conceitualmente. A unidade de processamento de transformada inversa 312 pode ser configurada adicionalmente para receber parâmetros de transformada ou informação correspondente dos dados de imagem codificados 21 (por exemplo, ao analisar e/ou decodificar, por exemplo, pela unidade de decodificação de entropia 304) para determinar a transformada a ser aplicada aos coeficientes desquantizados 311. Reconstrução
[0201] A unidade de reconstrução 314 (por exemplo, o adicionador ou somador 314) pode ser configurada para adicionar o bloco residual reconstruído 313 ao bloco de predição 365 para obter um bloco reconstruído 315 no domínio da amostra, por exemplo, ao somar os valores de amostras do bloco residual reconstruído 313 e os valores de amostras do bloco de predição 365. Filtragem
[0202] A unidade de filtro de laço 320 (no laço de codificação ou após o laço de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para suavizar transições de pixels, ou melhorar de outro modo a qualidade de vídeo. A unidade de filtro de laço 320 pode compreender um ou mais filtros de laço tais como um filtro de desblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro de laço adaptativo (ALF), um filtro de nitidez, um filtro de suavização ou um filtro colaborativo ou qualquer combinação dos mesmos. Embora a unidade de filtro de laço 320 esteja mostrada na figura 3 como sendo um filtro dentro de laço, em outras configurações a unidade de filtro de laço 320 pode ser implementada como um filtro pós-laço. Armazenamento Temporário de Imagens Decodificadas
[0203] Os blocos de vídeo decodificados 321 de uma imagem são então armazenados no armazenamento temporário de imagens decodificadas 330, o qual armazena as imagens decodificadas 331 como imagens de referência para compensação de movimento subsequente para outras imagens e/ou para produzir correspondentemente exibição.
[0204] O decodificador 30 é configurado para enviar a imagem decodificada 311, por exemplo, via saída 312, para apresentação ou visualização para um usuário. Predição
[0205] A unidade de predição inter 344 pode ser idêntica à unidade de predição inter 244 (em particular para a unidade de compensação de movimento) e a unidade de predição intra 354 pode ser idêntica à unidade de predição inter 254 em função, e realiza decisões de divisão ou partição e predição com base nos parâmetros de partição e/ou de predição ou em respectiva informação recebida dos dados de imagem codificados 21 (por exemplo, ao analisar e/ou decodificar, por exemplo, pela unidade de decodificação de entropia 304). A unidade de aplicação de modo 360 pode ser configurada para realizar a predição (predição intra ou inter) por bloco com base em imagens reconstruídas, blocos ou respectivas amostras (filtradas ou não filtradas) para obter o bloco de predição 365.
[0206] Quando a fatia de vídeo é codificada como uma fatia codificada intra (I), a unidade de predição intra 354 da unidade de aplicação de modo 360 é configurada para gerar o bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de predição intra sinalizado e em dados de blocos decodificados anteriormente da imagem atual. Quando a imagem de vídeo é codificada como uma fatia codificada inter (isto é, B ou P), a unidade de predição inter 344 (por exemplo, a unidade de compensação de movimento) da unidade de aplicação de modo 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 da unidade de decodificação de entropia 304. Para predição inter, os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir a lista de quadros de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas no DPB 330. O mesmo ou procedimento similar pode ser aplicado para ou por modalidades usando grupos de peças (por exemplo, grupos de peças de vídeo) e/ou peças (por exemplo, peças de vídeo) em adição ou alternativamente às fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando grupos de peças e /ou peças I, P ou B.
[0207] A unidade de aplicação de modo 360 é configurada para determinar a informação de predição para um bloco de vídeo da fatia de vídeo atual ao analisar os vetores de movimento ou informação relacionada e outros elementos de sintaxe, e usa a informação de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de aplicação de modo 360 usa 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 BGP), informação de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado inter da fatia, status de predição inter para cada bloco de vídeo codificado inter da fatia, e outra informação para decodificar os blocos de vídeo na fatia de vídeo atual. O mesmo ou procedimento similar pode ser aplicado para ou por modalidades usando grupos de peças (por exemplo, grupos de peças de vídeo) e/ou peças (por exemplo, peças de vídeo) em adição ou alternativamente às fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando grupos de peças e/ou peças I, P ou B.
[0208] Modalidades do decodificador de vídeo 30 tal como mostrado na figura 3 podem ser configuradas para particionar e/ou decodificar a imagem ao usar fatias (também referidas como fatias de vídeo), em que uma imagem pode ser particionada ou decodificada usando uma ou mais fatias (tipicamente não se sobrepondo), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs).
[0209] Modalidades do decodificador de vídeo 30 tal como mostrado na figura 3 podem ser configuradas para particionar e/ou decodificar a imagem ao usar grupos de peças (também referidos como grupos de peças de vídeo) e/ou peças (também referidas como peças de vídeo), em que uma imagem pode ser particionada ou decodificada usando um ou mais grupos de peças (tipicamente não se sobrepondo), e cada grupo de peças pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou uma ou mais peças, em que cada peça, por exemplo, pode ser de forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionários.
[0210] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificados 21. Por exemplo, o decodificador 30 pode produzir a fluxo de vídeo de saída sem a unidade de filtragem de laço 320. Por exemplo, um decodificador baseado em não transformada 30 pode quantizar de modo inverso o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para certos blocos ou quadros. Em uma 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.
[0211] Deve ser entendido que, no codificador 20 e no decodificador 30, um resultado de processamento de uma etapa atual pode ser processado adicionalmente e então enviado para a próxima etapa. Por exemplo, após filtragem de interpolação, derivação de vetor de movimento ou filtragem de laço, uma operação adicional, tal como corte ou mudança, pode ser realizada no resultado de processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem de laço.
[0212] Deve ser notado que operações adicionais podem ser aplicadas aos vetores de movimento derivados de bloco atual (incluindo, mas não limitam controlar vetores de movimento de ponto de modo afim, vetores de movimento de sub-bloco em modos de ATMVP planos afins, vetores de movimento temporal e assim por diante). Por exemplo, o valor de vetor de movimento é restringido a uma faixa predefinida de acordo com seu bit de representação. Se o bit de representação de vetor de movimento for bitDepth, então a faixa é -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, onde “^” significa exponenciação. Por exemplo, se bitDepth for estabelecido igual a 16, a faixa é de -32768 ~ 32767; se bitDepth for estabelecido igual a 18, a faixa é de -131072 ~ 131071. Por exemplo, o valor do vetor de movimento derivado (por exemplo, os MVs de quatro sub-blocos de 4x4 dentro de um bloco de 8x8) é restringido de tal maneira que a diferença máxima entre partes inteiras dos quatros MVs de sub-bloco de 4x4 não é mais que N pixels, tal como não mais que 1 pixel. Aqui são fornecidos dois métodos para restringir o vetor de movimento de acordo com o bitDepth.
[0213] Método 1: remover o MSB de sobrecarga (bit mais significativo) por meio das operações de fluxo ux= ( mvx+2bitDepth ) % 2bitDepth (1) mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (2) uy= ( mvy+2bitDepth ) % 2bitDepth (3) mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy (4) onde mvx é um componente horizontal de um vetor de movimento de um bloco ou de um sub-bloco de imagem, mvy é um componente vertical de um vetor de movimento de um bloco ou de um sub-bloco de imagem, e ux e uy indicam um valor intermediário; por exemplo, se o valor de mvx for -32769, após aplicar as fórmulas (1) e (2), o valor resultante é de 32767. Em sistema de computador, números decimais são armazenados como complemento de dois. O complemento de dois de -32769 é 1,0111,1111,1111,1111 (17 bits), então o MSB é descartado, assim o complemento de dois resultante é 0111,1111,1111,1111 (número decimal é 32767), o qual é o mesmo que aquele produzido ao aplicar as fórmulas (1) e (2) ux= ( mvpx + mvdx +2bitDepth ) % 2bitDepth (5) mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (6) uy= ( mvpy + mvdy +2bitDepth ) % 2bitDepth (7) mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : (8).
[0214] As operações podem ser aplicadas durante a soma de mvp e mvd, tal como mostrado nas fórmulas (5) a (8).
[0215] Método 2: remover o MSB de sobrecarga ao cortar o valor vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx) vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy) onde vx é um componente horizontal de um vetor de movimento de um bloco ou de um sub-bloco de imagem, vy é um componente vertical de um vetor de movimento de um bloco ou de um sub-bloco de imagem; x, y e z correspondem respectivamente a três valores de entrada do processo de corte de MV, e a definição da função Clip3 é tal como a seguir: x ; z < x Clip3( x, y, z ) = y ; z > y . z ; de outro modo
[0216] A figura 4 é um diagrama esquemático de um dispositivo de codificação de vídeo 400 de acordo com uma modalidade da divulgação. O dispositivo de codificação de vídeo 400 é adequado para implementar as modalidades divulgadas tais como descritas neste documento. 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 figura 1A ou um codificador tal como codificador de vídeo 20 da figura 1A.
[0217] O dispositivo de codificação de vídeo 400 compreende as portas de ingresso 410 (ou as portas de entrada 410) e as unidades receptoras (Rx) 420 para receber dados; um processador, unidade lógica ou unidade central de processamento (CPU) 430 para processar os dados; as unidades transmissoras (Tx) 440 e as portas de egresso 450 (ou as portas de saída 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 óticos para elétricos (OE) e componentes elétricos para óticos (EO) acoplados às portas de entrada 410, às unidades receptoras 420, às unidades transmissoras 440 e às portas de saída 450 para egresso ou ingresso de sinais óticos ou elétricos.
[0218] O processador 430 é implementado por meio de 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, as unidades receptoras 420, as unidades transmissoras 440, as portas de egresso 450 e com a memória 460. O processador 430 compreende um módulo de codificação 470. O módulo de codificação 470 implementa as modalidades divulgadas 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 um melhoramento substancial para a funcionalidade do dispositivo de codificação de vídeo 400 e efetua uma transformação do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação 470 é implementado como instruções armazenadas na memória 460 e executado pelo processador 430.
[0219] A memória 460 pode compreender 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 sobrecarga, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lidos durante execução de programa. A memória 460 pode ser, por exemplo, volátil e/ou não volátil e pode ser uma 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 estática de acesso aleatório (SRAM).
[0220] A figura 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como um ou outro ou como ambos de o dispositivo de origem 12 e o dispositivo de destino 14 da figura 1 de acordo com uma modalidade exemplar.
[0221] Um processador 502 no aparelho 500 pode ser uma unidade central de processamento. Alternativamente, o processador 502 pode ser qualquer outro tipo de dispositivo, ou múltiplos dispositivos, capaz de manipular ou processar informação existente agora ou desenvolvida futuramente. Embora as implementações divulgadas possam ser praticadas com um único processador tal como mostrado, por exemplo, com o processador 502, vantagens em velocidade e eficiência podem ser alcançadas usando mais de um processador.
[0222] 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 de dispositivo de armazenamento pode ser usado como a memória 504. A memória 504 pode incluir os códigos 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 os programas de aplicação 510, os programas de aplicação 510 incluindo pelo menos um programa que permite ao processador 502 realizar os métodos descritos aqui. Por exemplo, os programas de aplicação 510 podem incluir as aplicações 1 a N, as quais incluem adicionalmente uma aplicação de codificação de vídeo que realiza os métodos descritos aqui. O aparelho 500 também pode incluir um ou mais dispositivos de saída, tais como uma tela 518. A tela 518 pode ser, em um exemplo, uma tela sensível ao toque que combina uma tela com um elemento sensível ao toque que é operável para detectar entradas de toque. A tela 518 pode ser acoplada ao processador 502 por meio do barramento 512.
[0223] Embora representado aqui como um único barramento, o barramento 512 do aparelho 500 pode ser composto de múltiplos barramentos. Adicionalmente, o armazenamento secundário 514 pode ser acoplado diretamente aos outros componentes do aparelho 500 ou pode ser acessado por meio 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 grande variedade de configurações.
[0224] A Codificação de Vídeo Versátil (VVC) VVC é um padrão desenvolvido recentemente que codificará conteúdo de vídeo tanto de Faixa Dinâmica Padrão quanto de Faixa Dinâmica Alta. Vídeo de faixa dinâmica alta (vídeo de HDR) descreve vídeo tendo uma faixa dinâmica maior que aquela de vídeo de faixa dinâmica padrão (vídeo de SDR). Características chaves de vídeo de HDR são brancos mais brilhantes, pretos mais profundos, e pelo menos uma profundidade de cor de 10 bits (comparada aos 8 bits para vídeo de SDR) a fim de manter precisão através desta faixa estendida. Embora tecnicamente distinto, o termo “vídeo de HDR” é entendido comumente para indicar ampla faixa de cores igualmente.
[0225] Atualmente SDR e HDR são implementadas comercialmente e coexistirão durante muito tempo. Conteúdo de SDR tipicamente é codificado como gama Y’CbCr de Luminância Não Constante (NCL) em um container BT. 709 ou BT. 2020. Conteúdo de HDR tipicamente é codificado como NCL Y’CbCr PQ, ICtCp PQ de Luminância Constante, ou NCL Y’CbCr HLG em um container BT. 2020/BT. 2100. Na especificação de VVC atual, somente uma tabela de mapeamento para mapear luma para parâmetro de quantização de croma é especificada (Tabela 1). A tabela foi herdada de HEVC e projetada somente para conteúdo de SDR. Tal como reportado em [3] uso de tabela de QpC padrão resulta em artefatos de croma em taxa de bits baixa, especialmente em regiões acromáticas. Este documento propõe adicionar tabela(s) de mapeamento de croma específica(s) para conteúdo de HDR.
[0226] Considerando que o padrão recém-desenvolvido será implementado por vários anos e variabilidade de tipos de sinais processados pode ser aumentada pode ser desejável ter flexibilidade na especificação de tabela de mapeamento. Além disso, usar tabela de mapeamento de QP de croma de conteúdo específico pode trazer mais opções para otimização de codificador. Solução direta é especificar tabela de mapeamento no nível de grupo de imagens/fatias/peças. Entretanto, considerando que a faixa de Qp suportada pelo codec pode ser ampla o suficiente (por exemplo, em VVC ela está na faixa de 0 a 63) especificação de tabela direta pode consumir quantidade significativa de bits. Os métodos para sinalização de tabela de mapeamento de QP de croma permitindo reduzir consumo de bits são descritos adicionalmente. Deve ser entendido adicionalmente que relação entre QP de luma e QP de croma pode ser expressa como uma função ou como representação de tabela, e aqui e a seguir tabela de mapeamento e função de mapeamento são usados como sinônimos.
[0227] A figura 7 é uma apresentação esquemática da função de mapeamento de HEVC do índice de parâmetro de quantização QPi para o parâmetro de quantização de croma QPc para faixa de Qp suportada, onde 72 é função de mapeamento de HEVC e 71 é função de mapeamento de 1 para 1.
[0228] De acordo com a primeira modalidade da invenção a função de mapeamento de luma para croma é função monotonicamente crescente (não diminuindo) que é dividida em regiões de duas classes. A classe A são as regiões planas (732), onde a função não é crescente (ou plana), isto é, f(x) - f(x-1) = 0, e regiões de classe B, onde função está aumentando (731), isto é, f(x) - f(x-1) = c, onde c é função de x e c(x) >= 1, e em caso mais específico em regiões de classe B a função tem exasperação 1 para cada argumento de entrada consecutivo, isto é, f(x) - f(x-1) =
1. Conjunto X de valores de argumentos de entrada x é dividido em dois conjuntos não se sobrepondo. Conjunto A corresponde a valores de função de regiões não crescentes (classe A). Conjunto B corresponde a valores de função de regiões crescentes (classe B). Deve ser notado que X=A+B.
[0229] A figura 8 representa uma tabela de mapeamento exemplar apontando exemplos de valores de deltas de funções iguais a zero (87), isto é, regiões planas, e valores de argumentos correspondentes x (88). Por exemplo, para a tabela de mapeamento de HEVC 82 o conjunto A consiste dos valores 30, 35, 37, 39, 41 e 43. Para uma outra tabela de mapeamento modificada exemplar 83 o conjunto A consiste dos valores 30, 39, 43 (ou 35, 39, 43). De acordo com a primeira modalidade o conjunto A é sinalizado no fluxo de bits e decodificador constrói função de mapeamento, por exemplo, em forma de tabela de acordo com a informação sobre o conjunto A obtido de fluxo de bits.
Uma vez que o conjunto B pode ser derivado como B=X- A, onde X, por exemplo, é um conjunto de faixa de Qp suportada por decodificador (por exemplo, 0 a 63), e comportamento de função de mapeamento é definido para argumentos de entrada dos conjuntos A e B a função de mapeamento pode ser construída, por exemplo, em uma forma de tabela usando seguinte pseudocódigo exemplar tendo uma suposição de que primeiro valor de função de mapeamento correspondendo a x=0 é 0: chroma_qp_mapping_table[θ] = θ; // inicialização for (i = 1; i <= maxQP; i++) // maxQP é QP máximo suportado por decodificador { int incStep = 1; // incremento de função para conjunto B for (j = 0; j < cQpFlatSize; j++) // cQpFlatSize é tamanho de conjunto A { if (i == cQpFlat[j]) // arranjo de cQpFlat com elementos de conjunto A { incStep = 0; // incremento de função zero para conjunto A (plano) break: } } chroma_qp_mapping_table[i] = chroma_qp_mapping_table[i-1] + incStep; }.
[0230] Abaixo é mostrado um outro pseudocódigo exemplar demonstrando como um certo QPc pode ser calculado com base em determinado índice de QP QPi: int getQPc(int QPi) { int QPi = i; int sum = 0; for (int j = 0; j < cQpFlatSize; j++) { sum = sum + (cQpFlat[j] <= QPi ? 1 : 0); } int QPc = QPi - sum; return QPc }.
[0231] Deve ser notado que em alguma implementação o conjunto X pode ser um subconjunto da faixa de Qp suportada pelo decodificador. Esse subconjunto pode ser predefinido ou sinalizado no fluxo de bits.
[0232] Deve ser notado que definição de uma região plana (não crescente) da função de mapeamento também pode ser dada em uma forma usando valor de argumento de entrada atual e seguinte, isto é, f(x+1) - f(x) = 0. É entendido que tal definição não muda lógica de sinalização e obtenção de função de mapeamento. O mesmo efeito pode ser alcançado, por exemplo, ao colocar valores x+1 no conjunto A.
[0233] Uma vez que pontos de função de mapeamento são classificados em duas classes de comportamento definido, e número de pontos onde função de mapeamento é não crescente é limitado, a sobrecarga de sinalização é reduzida em comparação com sinalização direta de cada valor de função de mapeamento.
[0234] Para obter conjunto A em lado de decodificador o fluxo de bits compreende informação sobre tamanho (número de elementos) e valores de elementos do conjunto.
[0235] De acordo com o primeiro aspecto da modalidade o tamanho do conjunto A (sizeA) é sinalizado diretamente no fluxo de bits usando um dos códigos apropriados, por exemplo, binário, unário, unário truncado, binário truncado, código Golomb ou Exp-Golomb. Em uma implementação tendo restrição de que o conjunto A tem tamanho diferente de zero o valor sizeA-1 é sinalizado no fluxo de bits. Isso permite economizar um bit de sinalização.
[0236] De acordo com o segundo aspecto da modalidade os valores de elementos do conjunto A (por exemplo, 30, 39, 43) são sinalizados diretamente no fluxo de bits usando um dos códigos apropriados, por exemplo, binário, unário, unário truncado, binário truncado, código Golomb ou Exp-Golomb. A função de mapeamento correspondente pode ser expressa como uma tabela em uma forma exemplar mostrada a seguir. qPi < 30 30 31 32 33 34 35 36 37 38 39 40 41 42 43 > 43 QpC = 29 30 31 32 33 34 35 36 37 37 38 39 40 40 = qPi qPi - 3
[0237] Deve ser entendido que esta tabela mostrada acima pode ser usada para especificar função de mapeamento padrão quando sinalização de tabela de mapeamento via fluxo de bits não é capacitada ou evento não é suportado pelo codificador/decodificador.
[0238] Em uma outra modalidade exemplar de acordo com o segundo aspecto, os valores de elementos do conjunto A são iguais a (35, 39, 43). A função de mapeamento correspondente pode ser expressa como uma tabela em uma forma exemplar mostrada a seguir. qPi < 35 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 34 35 36 37 37 38 39 40 40 = qPi - 3
[0239] Deve ser entendido que esta tabela mostrada acima pode ser usada para especificar função de mapeamento padrão quando sinalização de tabela de mapeamento via fluxo de bits não é capacitada ou evento não é suportado pelo codificador/decodificador.
[0240] De acordo com o terceiro aspecto diferenças (delta_ai) entre valores de elementos atual (ai) e anteriores (ai-1) são sinalizadas para cada elemento exceto do primeiro elemento (por exemplo, delta_ai= ai - ai-1, para i > 0). Ter o conjunto A ordenado permite excluir diferenças negativas e economizar sinalização em bit de sinal. Além disso, saber que valores de elementos no conjunto A são exclusivos (não repetindo) assegura delta_ai sempre maior que zero, o que permite sinalizar delta_ai - 1 no fluxo de bits fornecendo redução adicional da sobrecarga de sinalização.
[0241] O primeiro valor do conjunto A a0 é sinalizado como uma diferença com algum starting_point_value, onde starting_point_value é sinalizado no fluxo de bits ou é algum valor predefinido, por exemplo, 0, 21, 30, maxQP >> 1, onde maxQP é o valor de QP máximo suportado pelo decodificador, por exemplo, 63, o starting_point_value também pode depender de tipo de conteúdo (por exemplo, SDR ou HDR). A diferença delta_a0 é sinalizada de acordo com método descrito acima. Abaixo é dado um exemplo de tabela de sintaxe e semântica correspondente para sinalizar o método descrito acima.
[0242] Sintaxe de dados de mapeamento de QP de Croma. cqp_mapping_set( ) { Descritor cqp_flat_points_minus1 ue(v) cqp_delta_fp0 ue(v) for ( i = 1; i <= cqp_flat_points_minus1; i++ ) { cqp_delta_fp_minus1[ i ] ue(v) } }
[0243] Semântica de dados de mapeamento de QP de croma: cqp_flat_points_minus1 mais 1 especifica o número de pontos de onde função de mapeamento é não crescente; cqp_delta_fp0 especifica o valor de delta entre primeiro elemento de conjunto de pontos onde a função de mapeamento é não crescente e starting_point_value, onde starting_point_value é igual a 21 (em uma outra implementação possível starting_point_value pode ser, por exemplo, 0, ou 26, ou 32, ou definido com base em faixa de Qp suportada, por exemplo, como maxQP/2), cqp_delta_fp_minus1[ i ] mais 1 especifica o valor de delta entre elemento de ordem i e de ordem i-1 de conjunto de pontos onde função de mapeamento é não crescente.
[0244] A variável cQpFlatSize é derivada tal como a seguir: cQpFlatSize = cqp_flat_points_minus1 + 1.
[0245] A variável cQpFlat[] é derivada tal como a seguir: cQpFlat[ 0 ] = cqp_delta_fp0 + starting_point_value; for( i = 1; i < cQpFlatSize; i++ ) { cQpFlat[ i ] = cqp_delta_fp_minus1[ i ] + 1 + cQpFlat[ i - 1 ] }.
[0246] A tabela de mapeamento de QP de croma cqpMappingTable[] é derivada tal como a seguir: cqpMappingTable [ 0 ] = 0; for( i = 1; i <= maxQP; i++ ) { incStep = 1 for ( j = 0; j < cQpFlatSize; j++) { if ( i = = cQpFlat[ j ] ) { incStep = 0 }
} cqpMappingTable [ i ] = cqpMappingTable [ i - 1 ] + incStep; } , onde maxQP é um QP suportado máximo.
[0247] Em implementação possível onde starting_point_value é 0 cqp_delta_fp0 especifica o valor de primeiro elemento de conjunto de pontos onde função de mapeamento é não crescente.
[0248] Semântica alternativa para obter o mesmo resultado e permitir obter QPc com base em um certo índice de QP QPi é como a seguir: sum = 0 for ( j = 0; j < cQpFlatSize; j++){ sum = sum + ( cQpFlat[j] <= QPi ? 1 : 0 ) } QPc = QPi – sum .
[0249] A implementação possível onde starting_point_value é 0 pode ter uma sintaxe e semântica como a seguir: cqp_mapping_data( ) { Descritor cqp_flat_points_minus1 ue(v) cqp_fp0 ue(v) for ( i = 1; i <= cqp_flat_points_minus1; i++ ) { cqp_delta_fp_minus1[ i ] ue(v) } } ou como um exemplo alternativo:
seq_parameter_set_rbsp( ) { Descri- tor sps_decoding_parameter_set_id u(4) ...
chroma_qp_mapping_flag u(1) if( chroma_qp_mapping_flag ) cqp_flat_points_minus1 ue(v) cqp_fp0 ue(v) for ( i = 1; i <= cqp_flat_points_minus1; i++ ) { cqp_delta_fp_minus1[ i ] ue(v) ...
} chroma_qp_mapping_flag igual a 1 especifica que tabela de mapeamento de Qp de croma é sinalizada e substitui a Tabela 2 que é usada para derivar QpC, chroma_qp_mapping_flag igual a 0 especifica que tabela de mapeamento de QP de croma padrão especificada na Tabela 2 é usada para derivar QpC. Quando chroma_qp_mapping_flag não está presente, ele é inferido para ser igual a 0; cqp_flat_points_minus1 mais 1 especifica o número de pontos de onde função de mapeamento é não crescente; cqp_fp0 especifica o primeiro elemento de conjunto de pontos onde função de mapeamento é não crescente; cqp_delta_fp_minus1[ i ] mais 1 especifica o valor de delta entre o elemento de ordem i e o de ordem i-1 de conjunto de pontos onde função de mapeamento é não crescente.
[0250] A variável cQpFlatSize é derivada tal como a seguir: cQpFlatSize = cqp_flat_points_minus1 + 1.
[0251] A variável cQpFlat[] é derivada tal como a seguir: cQpFlat[ 0 ] = cqp_fp0; for( i = 1; i < cQpFlatSize; i++ ) { cQpFlat[ i ] = cqp_delta_fp_minus1[ i ] + 1 + cQpFlat[ i - 1 ] }.
[0252] A tabela de mapeamento de QP de croma cqpMappingTable[] é derivada tal como a seguir: cqpMappingTable [ 0 ] = 0; for( i = 1; i <= maxQP; i++ ) { incStep = 1 for ( j = 0; j < cQpFlatSize; j++){ if ( i = = cQpFlat[ j ] ) incStep = 0 } cqpMappingTable [ i ] = cqpMappingTable [ i - 1 ] + incStep; } , onde maxQP é um QP suportado máximo.
[0253] Em um exemplo, qPCb, qPCr e qPCbCr são derivados tal como a seguir: qPChroma = Clip3( −QpBdOffset, 63, QpY ); qPCb = ChromaQpTable[ 0 ][ qPChroma ]; qPCr = ChromaQpTable[ 1 ][ qPChroma ]; qPCbCr = ChromaQpTable[ 2 ][ qPChroma ]; em que os parâmetros de quantização de croma para os componentes Cb e Cr, Qp’Cb e Qp’Cr, e codificação de Cb-Cr de junção Qp’CbCr são derivados tal como a seguir: Qp’Cb = Clip3( −QpBdOffset, 63, qPCb + pps_cb_qp_offset
+ slice_cb_qp_offset + CuQpOffsetCb ) + QpBdOffset; Qp’Cr = Clip3( −QpBdOffset, 63, qPCr + pps_cr_qp_offset + slice_cr_qp_offset + CuQpOffsetCr ) + QpBdOffset; Qp’CbCr = Clip3( −QpBdOffset, 63, qPCbCr + pps_joint_cbcr _qp_offset_value + slice_joint_cbcr_qp_offset + CuQpOffsetCbCr ) + QpBdOffset; onde ChromaQpTable é a tabela de mapeamento de QP de croma; onde QPi correspondem a qPChroma; onde QPc corresponde a qPCb, qPCr e qPCbCr; onde QpBdOffset é o deslocamento de profundidade de bits calculado com base na profundidade de bits das amostras dos arranjos de luma e croma usando a fórmula: QpBdOffset = 6 * bit_depth_minus8, onde bit_depth_minus8 deve estar na faixa de 0 a 8, inclusivo; onde pps_cb_qp_offset e pps_cr_qp_offset especificam os deslocamentos para o parâmetro de quantização de luma Qp’Y usado para derivar Qp’Cb e Qp’Cr, respectivamente; onde pps_joint_cbcr_qp_offset_value especifica o deslocamento para o parâmetro de quantização de luma Qp’Y usado para derivar Qp’CbCr ; onde slice_cr_qp_offset especifica uma diferença para ser adicionada ao valor de pps_cr_qp_offset ao determinar o valor do parâmetro de quantização Qp’Cr; onde slice_cb_qp_offset especifica uma diferença para ser adicionada ao valor de pps_cb_qp_offset ao determinar o valor do parâmetro de quantização Qp’Cb; onde slice_joint_cbcr_qp_offset especifica uma diferença para ser adicionada ao valor de pps_joint_cbcr_qp_offset_value ao determinar o valor do Qp’CbCr; onde as variáveis CuQpOffsetCb, CuQpOffsetCr e CuQpOffsetCbCr especificam valores para serem usados ao determinar os respectivos valores dos parâmetros de quantização Qp’Cb, Qp’Cr e Qp’CbCr para o decodificador.
[0254] Em uma implementação deslocamento de QP de croma de nível de imagem e de nível de fatia (pps_cr_qp_offset, slice_cr_qp_offset) podem ser utilizados durante derivação de arranjo de cQpFlat de ponto não crescente.
[0255] A variável cQpFlat[] é derivada tal como a seguir: cQpFlat[ 0 ] = cqp_fp0; for( i = 1; i < cQpFlatSize; i++ ) { cQpFlat[ i ] = cqp_delta_fp_minus1[ i ] + 1 + cQpFlat[ i - 1 ] - pps_cr_qp_offset - pps_cr_qp_offset }.
[0256] Abaixo é dado um exemplo de usar arranjo de cQpFlat de ponto não crescente, obtido com base em informação analisada de fluxo de bits integrado no processo de derivação de QP de crominância.
[0257] Quando ChromaArrayType não é igual a 0 e treeType é igual a SINGLE_TREE ou DUAL_TREE_CHROMA, o seguinte se aplica: - quando treeType é igual a DUAL_TREE_CHROMA, a variável QpY é estabelecida igual ao parâmetro de quantização de luma QpY da unidade de codificação de luma que cobre a localização de luma ( xCb + cbWidth / 2, yCb + cbHeight / 2 );
- as variáveis qPCb, qPCr e qPCbCr são derivadas tal como a seguir: qPiCb = Clip3( −QpBdOffsetC, 69, QpY + pps_cb_qp_offset + slice_cb_qp_offset ) (8-928) qPiCr = Clip3( −QpBdOffsetC, 69, QpY + pps_cr_qp_offset + slice_cr_qp_offset ) (8-929) qPiCbCr = Clip3( −QpBdOffsetC, 69, QpY + pps_joint_cbcr_q p_offset + slice_joint_cbcr_qp_offset ) (8-930) – se ChromaArrayType for igual a 1, as variáveis qPCb, qPCr e qPCbCr são estabelecidas iguais ao valor de QpC tal como a seguir: QpC = qPi – QpShift, onde a variável QpShift é derivada tal como a seguir: QpShift = 0 for ( j = 0; j < cQpFlatSize; j++ ){ QpShift = QpShift + ( cQpFlat[j] <= qPi ? 1:0) }.
[0258] A variável cQpFlat nos exemplos dados acima pode ser usada para definição e inicialização de tabela de mapeamento padrão. Abaixo são dados exemplos de cQpFlat que pode ser usados como padrão: cQpFlat = { 30, 35, 37, 39, 41, 43 } cQpFlat = { 30, 39, 43 } cQpFlat = { 35, 39, 43 }cQpFlat = { 35, 39, 41, 43 } cQpFlat = { 22, 23, 25, 27, 29, 31, 33, 35, 39, 40, 41, 43, 47, 49, 51, 53, 55 } cQpFlat = { 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 33, 35, 42, 47, 49, 51, 53, 55 }.
[0259] Para capacitar o valor de cQpFlat[ 0 ] para ser a seguir starting_point_value o cqp_delta_fp0 pode ser negativo e sinalização deste parâmetro pode incluir bit de sinal ou, por exemplo, usar código Exp-Golomb assinado tal como ele é especificado em um exemplo a seguir. cqp_mapping_set( ) { Descritor cqp_flat_points_minus1 ue(v) cqp_delta_fp0 se(v) for ( i = 1; i <= cqp_flat_points_minus1; i++ ) { cqp_delta_fp_minus1[ i ] ue(v) } }
[0260] Alternativamente, em uma implementação exemplar o tamanho e valores de conjunto A são sinalizados em um seguinte modo:
1. Ler um indicador se informação de fluxo de bits seguinte contém elemento de conjunto A.
2. Se o indicador for positivo (VERDADEIRO) ler valor de elemento de acordo, por exemplo, com o método descrito no aspecto dois ou no aspecto três. Repetir a etapa 1.
3. Se o indicador for negativo (FALSO) parar de ler informação relacionada com o conjunto A.
[0261] Nesta implementação, o tamanho do conjunto A é quantidade de indicadores tendo valores positivos.
[0262] Ter restrição de que o conjunto A não está vazio permite implementar sinalização do tamanho e valores do conjunto A em um seguinte modo:
1. Ler valor de elemento de acordo, por exemplo, com o método descrito no aspecto dois ou no aspecto três.
2. Ler um indicador se informação de fluxo de bits seguinte contém um outro elemento do conjunto A.
3. Se o indicador lido for positivo (VERDADEIRO) repetir a etapa 1 e então a etapa 2.
4. Se o indicador for negativo (FALSO) parar de ler informação relacionada com o conjunto A.
[0263] Nesta implementação, o tamanho do conjunto A é quantidade de indicadores tendo valores positivos mais um. Ter restrição de que o conjunto A não está vazio permite excluir sinalização de um indicador de adição, o que reduz adicionalmente sobrecarga de sinalização.
[0264] Deve ser mencionado que sinalização de tamanho e valor de elementos do conjunto A descrita acima pode ser implementada usando qualquer um dos códigos apropriados, por exemplo, binário, unário, unário truncado, binário truncado, código Golomb ou Exp-Golomb, etc.
[0265] Em uma realização de função de mapeamento, número de elementos em regiões planas (conjunto A) pode ser maior que número de elementos em regiões crescentes (conjunto B). Esse caso é benéfico para sinalizar elementos do conjunto B em vez de usar métodos descritos acima.
[0266] De acordo com a segunda modalidade da invenção as regiões de classe B de função de mapeamento de luma para croma são divididas em grupos de subconjuntos de Bk onde cada subconjunto Bk inclui elementos x nos quais a função de mapeamento tem o mesmo incremento ck: x ∈ Bk se f(x) - f(x-1) = ck, onde ck é um dos números naturais (por exemplo, 0, 1, 2, 3, 4 ...).
[0267] Em outras palavras, o subconjunto B é dividido em subconjuntos diferentes dependendo de quantidade de exasperação de função de mapeamento em pontos x do subconjunto Bk.
[0268] Em um exemplo apresentado na figura 10 as regiões indicadas por 1031 têm o incremento de função de mapeamento igual a 1 (ck = 1). A região indicada por 1032 tem o incremento de função igual a 2 (ck = 2). As regiões indicadas por 1032 têm o incremento de função igual a 0 (ck = 0). A tabela a seguir ilustra divisão em subconjuntos Bk correspondendo à função exemplar apresentada na figura 10: Incremento de Número de pontos em Pontos x de função, ck subconjunto Bk subconjunto Bk 2 1 11 0 6 30, 35, 37, 39, 41, 43 1 maxQP - (6 + 1) pontos restantes de
X onde maxQP é o valor de QP máximo suportado por decodificador (por exemplo, 0 a 63).
[0269] De acordo com a terceira modalidade, o fluxo de bits compreende informação sobre quantidade de subconjuntos Bk sinalizados em fluxo de bits, incremento de função ck para cada subconjunto sinalizado no fluxo de bits, tamanho de cada subconjunto Bk sinalizado no fluxo de bits e pontos de cada subconjunto Bk sinalizado no fluxo de bits.
[0270] Abaixo é dado um exemplo de sintaxe e semântica: cqp_mapping_data( ) { Descritor cqp_set_num ue(v) for ( k = 0; k < cqp_set_num; k++ ) { cqp_set_inc[ k ] ue(v) cqp_set_size[ k ] ue(v) for ( i = 0; i < cqp_set_size[ k ]; i++ ) { cqp_set_point[ k ][ i ] ue(v) } } } cqp_set_num especifica número de conjuntos de pontos nos quais tabela de mapeamento de QP de croma tem comportamento não padrão (examinar de acordo com incremento de função de comportamento padrão igual a 1 é entendido, de uma maneira geral comportamento padrão pode ser definido de outro modo, por exemplo, como função de mapeamento sinalizada anteriormente, ou função de mapeamento padrão); cqp_set_inc[ k ] especifica incremento de função em pontos do conjunto de ordem k; cqp_set_size[ k ] especifica o número de pontos do conjunto de ordem k; cqp_fp0 especifica o primeiro elemento de conjunto de pontos onde função de mapeamento é não crescente; cqp_set_point[ k ][ i ] especifica o elemento de ordem i do conjunto de ordem k (aqui codificação de delta entre ordem i e ordem i-1 pode ser usada para elementos exceto i=0 como em exemplos acima).
[0271] A variável cQpFlatSize é derivada tal como a seguir: cQpFlatSize = cqp_flat_points_minus1 + 1.
[0272] A variável cQpFlat[] é derivada tal como a seguir: cQpFlat[ 0 ] = cqp_fp0; for( i = 1; i < cQpFlatSize; i++ ) { cQpFlat[ i ] = cqp_delta_fp_minus1[ i ] + 1 + cQpFlat[ i - 1 ] }.
[0273] A tabela de mapeamento de QP de croma cqpMappingTable[] é derivada tal como a seguir: cqpMappingTable [ 0 ] = 0; for( i = 1; i <= maxQP; i++ ) { incStep = 1 // (estabelecer comportamento padrão) for ( k = 0; k < cqp_set_num; k++){ for ( j = 0; j < cqp_set_size[ k ]; j++){ if ( i = = cqp_set_point[ k ][ i ] ) incStep = cqp_set_inc[ k ] } } cqpMappingTable [ i ] = cqpMappingTable [ i - 1 ] + incStep; } , onde maxQP é um QP suportado máximo.
[0274] Derivação de certo valor de QpC com base em certo índice de QP (qPi) pode ser descrita tal como a seguir: QpC = qPi + QpShift, onde a variável QpShift é derivada tal como a seguir: QpShift = 0 defInc = 1 for ( k = 0; k < cqp_set_num; k++){ for ( j = 0; j < cqp_set_size[ k ]; j++){
if (qPi < = cqp_set_point[ k ][ i ] ) QpShift = QpShift + cqp_set_inc[ k ] - defInc } } , onde a variável defInc = 1 define incremento de função padrão (por exemplo, igual a 1 em determinado exemplo).
[0275] Ou alternativamente: QpC = qPi + QpShift, onde a variável QpShift é derivada tal como a seguir: QpShift = 0 defInc = 1 for ( k = 0; k < cqp_set_num; k++){ for ( j = 0; j < cqp_set_size[ k ]; j++){ QpShift = QpShift + (cqp_set_point[ k ][ i ] <= qPi ? cqp_set_inc[ k ] - defInc : 0 ) } }.
[0276] Deve ser notado que ter valor sinalizado para a variável cqp_set_inc[ k ] (por exemplo, sinalizado usando código Exp-Golomb assinado (se(v)) permite flexibilidade adicional de ter exasperação negativa da função, isto é, função de mapeamento diminuindo mantendo mesma semântica.
[0277] Como um segundo aspecto da tabela de mapeamento de QP de croma de segunda modalidade, informação pode ser usada para modificação de função de mapeamento padrão ou de função de mapeamento sinalizada anteriormente. Pode ser usada para adaptação de função de mapeamento para parte específica de sequência de vídeo para aumentar eficiência de compressão ao utilizar melhor propriedades de sinal de vídeo variando. De acordo com esse aspecto, comportamento (ou incremento) de função padrão descrito acima é substituído por incremento de função de mapeamento existente. A semântica exemplar pode ser tal como a seguir.
[0278] A tabela de mapeamento de QP de croma cqpMappingTable[] é derivada tal como a seguir: cqpMappingTable [ 0 ] = 0; for( i = 1; i <= maxQP; i++ ) { incStep = cqpMappingTablePrev [ i ] - cqpMappingTablePrev [ i-1 ] // (incremento de função de mapeamento anterior) for ( k = 0; k < cqp_set_num; k++){ for ( j = 0; j < cqp_set_size[ k ]; j++){ if ( i = = cqp_set_point[ k ][ j ] ) incStep = cqp_set_inc[ k ] } } cqpMappingTable [ i ] = cqpMappingTable [ i - 1 ] + incStep; } , onde maxQP é um QP suportado máximo e cqpMappingTablePrev é tabela de mapeamento sinalizada anteriormente ou padrão.
[0279] Derivação de certo valor de QpC com base em certo índice de QP (qPi) pode ser descrita tal como a seguir: QpC = qPi + QpShift, onde a variável QpShift é derivada tal como a seguir:
QpShift = 0 defInc = cqpMappingTablePrev [ qPi ] - cqpMappingTablePrev [ qPi - 1 ] for ( k = 0; k < cqp_set_num; k++){ for ( j = 0; j < cqp_set_size[ k ]; j++){ if (qPi < = cqp_set_point[ k ][ j ] ) QpShift = QpShift + cqp_set_inc[ k ] - defInc } } , onde a variável defInc define incremento de função de mapeamento anterior (cqpMappingTablePrev).
[0280] Ou alternativamente: QpC = qPi + QpShift, Onde a variável QpShift é derivada tal como a seguir: QpShift = 0 defInc = cqpMappingTablePrev [ qPi ] - cqpMappingTablePrev [ qPi - 1 ] for ( k = 0; k < cqp_set_num; k++){ for ( j = 0; j < cqp_set_size[ k ]; j++){ QpShift = QpShift + (cqp_set_point[ k ][ i ] <= qPi ? cqp_set_inc[ k ] - defInc : 0 ) } } , onde a variável defInc define incremento de função de mapeamento anterior (cqpMappingTablePrev).
[0281] Métodos de uso descritos na segunda modalidade permitem excluir os parâmetros pps_cr_qp_offset e slice_cr_qp_offset do cálculo de índice de QP (qPi) e usar QP de luma como um argumento de entrada para função de mapeamento. Isso simplifica fórmula de derivação de parâmetro QP de croma e permite eliminar necessidade de sinalizar no fluxo de bits os parâmetros de deslocamento de QP de croma pps_cr_qp_offset e slice_cr_qp_offset.
[0282] Os parâmetros pps_cr_qp_offset e slice_cr_qp_offset podem ser aplicados após aplicar função de mapeamento.
[0283] Abaixo é dado um outro exemplo de sintaxe e semântica que não tem limitação de quão grande é o crescimento de função de mapeamento em cada ponto. A função de mapeamento ainda tem limitação de ser uma não decrescente. Sintaxe de Conjunto de Parâmetros de Sequência seq_parameter_set_rbsp( ) { Descritor sps_decoding_parameter_set_id u(4) ...
same_сqp_table u(1) for( n = 0; n < same_qp_table_for_chroma ? 1 : 3; n++ ) { cqp_set_num_m1[ n ] ue(v) for ( k = 0; k <= cqp_set_num_m1[ n ]; k++ ) { cqp_set_inc[ n ][ k ] ue(v) cqp_set_size_m1[ n ][ k ] ue(v) for ( i = 0; i <= cqp_set_size_m1[ n ][ k ]; i++ ) cqp_set_delta_m1[ n ][ k ][ i ] ue(v) } } Semântica: Opção 2, Baseada em Tabela
[0284] A seguir semânticas são propostas para derivar tabela de mapeamento de QP de croma com base nos parâmetros sinalizados: same_cqp_table igual a 1 especifica que somente uma tabela de mapeamento de QP de croma é sinalizada e se aplica a ambos de componentes Cb e Cr e codificação de Cb- Cr de junção, same_cqp_table igual a 0 especifica que três tabelas de mapeamento de QP de croma são sinalizadas no SPS; cqp_set_num_m1[ n ] mais 1 especifica número de conjuntos de pontos nos quais enésima função de mapeamento de QP de croma tem valor de delta exceto 1; cqp_set_inc[ n ][ k ] especifica o incremento de função de mapeamento de Qp de croma em pontos do conjunto de ordem k, e restringido para não ser 1; cqp_set_size_m1[ n ][ k ] mais 1 especifica o número de pontos do conjunto; cqp_set_delta_m1[ n ][ k ][ i ] mais 1 especifica elemento de ordem i do conjunto se i for igual a 0, e valor de delta entre elemento de ordem i e de ordem i-1 de outro modo.
[0285] O arranjo cqp_set_point[ n ][ k ][ i ] especifica conjuntos de pontos nos quais enésima tabela de mapeamento de Qp de croma tem valor de delta exceto 1, e é derivado tal como a seguir: cqp_set_point[ n ][ k ][ i ] = cqp_set_delta_m1[ n ][ k ][ i ] + 1 + ( i > 0 ? : cqp_set_point[ n ][ k ][ i - 1 ] : 0 ).
[0286] A enésima tabela de mapeamento de QP de croma cqpMappingTable[ i ] para n =
0..same_qp_table_for_chroma ? 0 : 2 é derivada tal como a seguir: cqpMappingTable[ n ][ 0 ] = 0 cqpMappingTable[ n ][ i ] = cqpMappingTable[ n ][ i - 1 ] + incStep, com i = 1..63, onde incStep é inicializado com 1 e modificado como se segue, para k = 0..cqp_set_num_m1[ n ] e j = 0..cqp_set_size_m1[ n ][ k ]: - If ( i = = cqp_set_point[ n ][ k ][ j ] ) incStep = cqp_set_inc[ n ][ k ].
[0287] Para alguma implementação, talvez seja benéfico evitar armazenar a tabela de mapeamento total para economizar memória. Para alcançar isso, processo de derivação para certo valor de Qp de croma é fornecido. Elementos de sintaxe e semântica para ele são os mesmos da opção 1, mas manutenção de cqpMappingTable não é necessária: same_cqp_table igual a 1 especifica que somente uma tabela de mapeamento de QP de croma é sinalizada e se aplica a ambos de componentes Cb e Cr e codificação de Cb- Cr de junção, same_cqp_table igual a 0 especifica que três tabelas de mapeamento de QP de croma são sinalizadas no SPS; cqp_set_num_m1[ n ] mais 1 especifica número de conjuntos de pontos nos quais enésima função de mapeamento de Qp de croma tem valor de delta exceto 1; cqp_set_inc[ n ][ k ] especifica o incremento de função de mapeamento de Qp de croma em pontos do conjunto de ordem k, e restringido para não ser 1; cqp_set_size_m1[ n ][ k ] mais 1 especifica o número de pontos do conjunto; cqp_set_delta_m1[ n ][ k ][ i ] mais 1 especifica elemento de ordem i do conjunto se i for igual a 0, e valor de delta entre elemento de ordem i e de ordem i-1 de outro modo.
[0288] O arranjo cqp_set_point[ n ][ k ][ i ] especifica conjuntos de pontos nos quais enésima tabela de mapeamento de Qp de croma tem valor de delta exceto 1, e é derivado tal como a seguir: cqp_set_point[ n ][ k ][ i ] = cqp_set_delta_m1[ n ][ k ][ i ] + 1 + ( i > 0 ? : cqp_set_point[ n ][ k ][ i - 1 ] : 0 ). Semântica: Opção 2, Sem Tabela
[0289] Para alguma implementação, talvez seja benéfico evitar armazenar tabela de mapeamento total para economizar memória. Para alcançar isso, processo de derivação para certo valor de Qp de croma é fornecido. Elementos de sintaxe e semântica para ele são os mesmos da opção 1, mas manutenção de cqpMappingTable não é necessária: same_cqp_table igual a 1 especifica que somente uma tabela de mapeamento de QP de croma é sinalizada e se aplica a ambos de componentes Cb e Cr e codificação de Cb- Cr de junção, same_cqp_table igual a 0 especifica que três tabelas de mapeamento de QP de croma são sinalizadas no SPS; cqp_set_num_m1[ n ] mais 1 especifica número de conjuntos de pontos nos quais enésima função de mapeamento de QP de croma tem valor de delta exceto 1; cqp_set_inc[ n ][ k ] especifica o incremento de função de mapeamento de Qp de croma em pontos do conjunto de ordem k, e restringido para não ser 1;
cqp_set_size_m1[ n ][ k ] mais 1 especifica o número de pontos do conjunto; cqp_set_delta_m1[ n ][ k ][ i ] mais 1 especifica elemento de ordem i do conjunto se i for igual a 0, e valor de delta entre elemento de ordem i e de ordem i-1 de outro modo.
[0290] O arranjo cqp_set_point[ n ][ k ][ i ] especifica conjuntos de pontos nos quais enésima tabela de mapeamento de Qp de croma tem valor de delta exceto 1, e é derivado tal como a seguir: cqp_set_point[ n ][ k ][ i ] = cqp_set_delta_m1[ n ][ k ][ i ] + 1 + ( i > 0 ? : cqp_set_point[ n ][ k ][ i - 1 ] : 0 ). Processo de Derivação
[0291] Quando treeType é igual a DUAL_TREE_CHROMA, a variável QpY é estabelecida igual ao parâmetro de quantização de luma QpY da unidade de codificação de luma que cobre a localização de luma ( xCb + cbWidth / 2, yCb + cbHeight / 2 ); - o arranjo QpMapOffset[ n ], com n = 0..2 é inicializado com 0. Se ChromaArrayType for igual a 1, o QpMapOffset é modificado como se segue, para k =
0..cqp_set_num_m1[ n ] e i = 0..cqp_set_size_m1[ n ][ k ]: - QpMapOffset[ n ] = QpMapOffset[ n ] + (cqp_set_point[ n ][ k ][ i ] <= QpY? cqp_set_inc[ n ][ k ] - 1 : 0 ); - as variáveis QpOffsetCb, QpOffsetCr e QpOffsetCbCr são derivadas tal como a seguir: QpOffsetCb = QpMapOffset[0] + pps_cb_qp_offset + slice_cb_qp_offset QpOffsetCr = QpMapOffset[1] + pps_cr_qp_offset + slice_cr_qp_offset QpOffsetCbCr = QpMapOffset[2] + pps_cbcr_qp_offset + slice_cbcr_qp_offset – os parâmetros de quantização de croma para os componentes Cb e Cr, Qp’Cb e Qp’Cr, e codificação de Cb-Cr de junção Qp’CbCr são derivados tal como a seguir: Qp’Cb = Clip3( −QpBdOffsetC, 63, QpY + QpOffsetCb )+ QpBdOffsetC (8-931) Qp’Cr = Clip3( −QpBdOffsetC, 63, QpY + QpOffsetCr ) + QpBdOffsetC (8-932) Qp’CbCr = Clip3( −QpBdOffsetC, 63, QpY + QpOffsetCbCr )+ QpBdOffsetC (8-933).
[0292] Deve ser notado que tabelas de mapeamento separadas podem ser usadas para Cb e Cr, isto é, informação de tabela de mapeamento para Cb pode ser obtida com base em fluxo de bits, e informação de tabela de mapeamento para Cr pode ser obtida com base no fluxo de bits.
[0293] De acordo com a terceira modalidade a função de mapeamento é representada como função por partes e informação sinalizada no fluxo de bits são pontos de interrupção (ou pontos de mudanças, ou pontos pivôs) da função por partes, por exemplo, 94, 95 tal como representado na figura 9.
[0294] Em muitos modos diretos quantidade de pontos pivôs e suas coordenadas x e y são sinalizadas no fluxo de bits como informação para obter função de mapeamento. Similar ao modo tal como descrito no aspecto um da primeira modalidade o tamanho de conjunto com pontos pivôs pode ser restringido para ter tamanho maior que zero, e neste caso um tamanho de valor - 1 é sinalizado no fluxo de bits. Deve ser notado que “informação para obter função de mapeamento” pode ser descrita como “informação da função de mapeamento”, “informação para obter ...” pode ser descrita como “informação de ...”.
[0295] Em um primeiro aspecto da terceira modalidade uma função linear por partes é usada para representar função de mapeamento.
[0296] Em implementação adicional pode ser restringido que primeiro ponto no conjunto (ponto A 94) pertence à função 1 a 1 monotônica 91 e sinalizar uma coordenada, por exemplo, Ax, é suficiente e Ay é derivada já que Ay = Ax. Além disso, assumindo que o último segmento (ou parte) da função linear por partes é paralelo à função 1 a 1 o ponto C 96 não precisa ser sinalizado, e parâmetros do último segmento são derivados com base no ponto B 95 e no conhecimento de que o último segmento é paralelo à função 1 a 1.
[0297] Para reduzir adicionalmente a sobrecarga de sinalização, as diferenças entre coordenadas x e y correspondentes de pontos pivôs atual (por exemplo, B 95) e anteriores (por exemplo, A 94) são sinalizadas no fluxo de bits. Para o primeiro ponto a diferença a partir de algum starting_point é sinalizada. O starting_point é algum ponto predefinido ou sinalizado no fluxo de bits. Em uma implementação o starting_point pode ser restringido para ficar em 1 a 1, e neste caso uma coordenada é suficiente para definir o starting_point.
[0298] Deve ser salientado que a modalidade um e a modalidade dois descritas acima podem coexistir em uma implementação de decodificador. O método mais apropriado,
por exemplo, tendo menos bit para sinalizar, é selecionado por codificador e sinalizado por indicador correspondente em fluxo de bits. Em uma implementação, decodificador pode usar uma função de mapeamento predefinida e opção para usar função de mapeamento obtida de fluxo de bits. Nesse caso a opção é sinalizada por meio de indicador correspondente no fluxo de bits. Uma vez que a função de mapeamento apropriada pode depender de certas características de sinal da sequência ou de sua parte, o codificador pode decidir se é para usar função de mapeamento predefinida ou gastar alguns bits adicionais ao sinalizar função de mapeamento em fluxo de bits.
[0299] Partes diferentes de sequência podem ter características de sinal diferentes e correspondentemente função de mapeamento ideal diferente. Para fornecer capacidade para mudar função de mapeamento para partes diferentes da sequência o fluxo de bits contém indicador indicando se é para mudar função de mapeamento, por exemplo, em um nível de imagem, fatia ou de grupo de peças ou em conjunto de parâmetros de adaptação.
[0300] Abaixo é dado um exemplo de tabela de sintaxe correspondendo a sinalizar informação de função de mapeamento em conjunto de parâmetros de sequência. seq_parameter_set_rbsp( ) { Descritor sps_decoding_parameter_set_id u(4) ... chroma_qp_mapping_flag u(1) if( chroma_qp_mapping_flag ) cqp_mapping_data( ) ...
}
[0301] Semântica exemplar para a tabela de sintaxe acima é como a seguir: chroma_qp_mapping_flag igual a 1 especifica que função de mapeamento de QP de croma é sinalizada e substitui especificação padrão de QpC (Qp de croma) como uma função de qPi (derivada com base em Qp de luma) que é usada para derivar QpC. chroma_qp_mapping_flag igual a 0 especifica que tabela de mapeamento de Qp de croma padrão é usada para derivar QpC. Quando chroma_qp_mapping_flag não está presente, ele é inferido para ser igual a 0.
[0302] Deve ser notado que em uma implementação chroma_qp_mapping_flag pode ser omitido e herdado como 1. Isso significa que informação de mapeamento de Qp de croma (cqp_mapping_data()) está sempre presente em fluxo de bits.
[0303] O sinal de vídeo transferido em fluxo de bits pode ter estrutura de amostragem de formato de croma diferente. Abaixo é dado um exemplo de especificação de formato de amostragem de croma. chroma_form separate_colour_pl Formato SubWid SubHei at_idc ane_flag de croma thC ghtC 0 0 Monocromá 1 1 tico 1 0 4:2:0 2 2 2 0 4:2:2 2 1 3 0 4:4:4 1 1 3 1 4:4:4 1 1
[0304] Em amostragem monocromática existe somente um arranjo de amostras, o qual é considerado nominalmente o arranjo de luma.
[0305] Na amostragem 4:2:0, cada um dos dois arranjos de croma tem metade da altura e metade da largura do arranjo de luma.
[0306] Na amostragem 4:2:2, cada um dos dois arranjos de croma tem a mesma altura e metade da largura do arranjo de luma.
[0307] Na amostragem 4:4:4, dependendo do valor de separate_colour_plane_flag, o seguinte se aplica: - se separate_colour_plane_flag for igual a 0, cada um dos dois arranjos de croma tem as mesmas altura e largura do arranjo de luma; - de outro modo (separate_colour_plane_flag é igual a 1), os três planos de cores são processados separadamente como imagens amostradas monocromáticas.
[0308] Em uma implementação presença em chroma_qp_mapping_flag e/ou informação de mapeamento de Qp de croma (cqp_mapping_data( )) pode depender da amostragem de formato de croma tal como especificado de modo exemplar nas tabelas a seguir, onde, por exemplo, chroma_format_idc igual a 3 indicou que o formato de amostragem de croma é 4:2:0: seq_parameter_set_rbsp( ) { Descritor sps_decoding_parameter_set_id u(4) ... chroma_format_idc ue(v) ... if( chroma_format_idc ==3 ) chroma_qp_mapping_flag u(1) if( chroma_qp_mapping_flag ) cqp_mapping_data( )
... u(1) } um outro exemplo: seq_parameter_set_rbsp( ) { Descritor sps_decoding_parameter_set_id u(4) ... chroma_format_idc ue(v) ... if( chroma_format_idc ==3 ) cqp_mapping_data( ) ... u(1) } um outro exemplo: seq_parameter_set_rbsp( ) { Descritor sps_decoding_parameter_set_id u(4) ... chroma_format_idc ue(v) ... if( chroma_format_idc ==3 ) chroma_qp_mapping_flag u(1) if( chroma_qp_mapping_flag ) cqp_mapping_data( ) ... u(1) } um outro exemplo. seq_parameter_set_rbsp( ) { Descritor
... chroma_format_idc ue(v)
... if( chroma_format_idc ==3 ) cqp_mapping_data( ) ... u(1)
[0309] Sinalização condicional de informação de mapeamento de QP de croma dependendo de formato de amostragem de croma reduz adicionalmente a sobrecarga de sinalização. Por exemplo, se formato de croma for monocromático (formato de amostragem for 4:0:0) a tabela de mapeamento não é sinalizada. Ter componentes de cor codificados separadamente (separate_colour_plane_flag é igual a 1) é um outro exemplo de caso em que tabela de mapeamento de croma não é sinalizada. Isso permite economizar bits em sinalização de tabela de mapeamento de QP de croma quando componentes de croma não estão presentes ou codificados separadamente.
[0310] Abaixo é dado um exemplo de tabela de sintaxe correspondendo a sinalizar informação de função de mapeamento em conjunto de parâmetros de adaptação. adaptation_parameter_set_rbsp( ) { Descritor adaptation_parameter_set_id u(5) aps_params_type u(3) if( aps_params_type = = ALF_APS ) alf_data( ) else if( aps_params_type = = LMCS_APS ) lmcs_data( ) else if( aps_params_type = = CQP_APS ) cqp_mapping_data( ) aps_extension_flag u(1) if( aps_extension_flag )
while(more_rbsp_data( ) ) aps_extension_data_flag u(1) rbsp_trailing_bits( ) }
[0311] Onde CQP_APS é identificador de informação de tabela de mapeamento de QP de croma.
[0312] A função de mapeamento adequada pode depender de eficiência de codec em compressão de componentes de cor e características de sinal de certa sequência. Pode ser ainda mais considerável para conteúdo de HDR uma vez que informação de cor é muito importante para este tipo de conteúdo. Além disso, componentes Cb e Cr podem ter características diferentes e funções de mapeamento ideais diferentes por sua vez. Para melhor encaixe em tipo e características de conteúdo, pode ser benéfico ter funções de mapeamento diferentes para componentes Cb e Cr. Para fornecer esta capacidade o fluxo de bits em uma implementação vantajosa compreende informação para obter função de mapeamento para ambos os componentes Cb e Cr.
[0313] Em implementação vantajosa adicional, permitindo ter flexibilidade, o fluxo de bits compreende indicador indicando se função de mapeamento é sinalizada para ambos os componentes Cb e Cr. Se indicador for positivo (VERDADEIRO) então decodificador obtém duas funções de mapeamento do fluxo de bits correspondendo aos componentes Cb e Cr e usa as mesmas durante processo de reconstrução. De outro modo, a única função de mapeamento é usada para reconstrução de componentes Cb e Cr.
[0314] A figura 11 demonstra tabela de mapeamento de Qp de croma de VVC como uma função de qPi. Pode ser visto que a função de mapeamento de luma para croma é função monotonicamente crescente (não decrescente) que pode ser dividida em regiões de duas classes. Regiões de classe A, onde a função não é crescente (ou plana) isto é, f(x) - f(x-1) = 0, e regiões de classe B, onde a função é crescente, isto é, f(x) - f(x-1) = 1.
[0315] No método de sinalização propomos sinalizar no fluxo de bits os pontos de classe A (regiões planas) usando representação diferencial (por exemplo, cqp_delta_fpi = A[i] - A[i-1]). De acordo com o método proposto, o decodificador constrói uma função de mapeamento usando informação sobre pontos do conjunto A. Para pontos restantes de faixa de Qp admissível a função de mapeamento é assumida para ser aumentada monotonicamente com o incremento 1. Por exemplo, para reproduzir função de mapeamento de VVC atual os seguintes pontos precisam ser sinalizados: 30, 35, 37, 39, 41 e 43.
[0316] Em SPS, um novo elemento de sintaxe chroma_qp_mapping_flag é adicionado. Quando o valor de chroma_qp_mapping_flag é igual a 0 a tabela de mapeamento de Qp de croma padrão é usada. Quando o valor de chroma_qp_mapping_flag é igual a 1, uma tabela de mapeamento de QP de croma é sinalizada. Uma Sintaxe de Conjunto de Parâmetros de Sequência Exemplar seq_parameter_set_rbsp( ) { Descritor sps_decoding_parameter_set_id u(4) ...
chroma_qp_mapping_flag u(1) if( chroma_qp_mapping_flag ) cqp_flat_points_minus1 ue(v) cqp_fp0 ue(v) for ( i = 1; i <= cqp_flat_points_minus1; i++ ) { cqp_delta_fp_minus1[ i ] ue(v) ... }
[0317] A seguir semânticas são propostas para derivar tabela de mapeamento de Qp de croma com base nos parâmetros sinalizados: chroma_qp_mapping_flag igual a 1 especifica que tabela de mapeamento de Qp de croma é sinalizada e substitui a Tabela 8 15 - especificação de QpC como uma função de qPi que é usado para derivar QpC, chroma_qp_mapping_flag igual a 0 especifica que tabela de mapeamento de Qp de croma padrão especificada na Tabela 8 15 - especificação de QpC como uma função de qPi é usado para derivar QpC. Quando chroma_qp_mapping_flag não está presente, ele é inferido para ser igual a 0; cqp_flat_points_minus1 mais 1 especifica o número de pontos de onde função de mapeamento é não crescente; cqp_fp0 especifica o primeiro elemento de conjunto de pontos onde função de mapeamento é não crescente; cqp_delta_fp_minus1[ i ] mais 1 especifica o valor de delta entre elemento de ordem i e de ordem i-1 de conjunto de pontos onde função de mapeamento é não crescente.
[0318] A variável cQpFlatSize é derivada tal como a seguir:
cQpFlatSize = cqp_flat_points_minus1 + 1.
[0319] A variável cQpFlat[] is derivada tal como a seguir: cQpFlat[ 0 ] = cqp_fp0; for( i = 1; i < cQpFlatSize; i++ ) { cQpFlat[ i ] = cqp_delta_fp_minus1 [ i ] + cQpFlat[ i-1 ] }.
[0320] A tabela de mapeamento de QP de croma cqpMappingTable[] é derivada tal como a seguir: cqpMappingTable [ 0 ] = 0; for( i = 1; i <= maxQP; i++ ) { incStep = 1 for ( j = 0; j < cQpFlatSize; j++){ if ( i = = cQpFlat[ j ] ) incStep = 0 } cqpMappingTable [ i ] = cqpMappingTable [ i - 1 ] + incStep; }.
[0321] Como um segundo aspecto da proposta, avaliamos uma função de mapeamento ajustada tendo regiões não crescentes nos pontos 35, 39, 43. A função de mapeamento ajustada está representada na figura 12.
[0322] Os resultados seguintes foram obtidos usando função de mapeamento de QP de croma ajustada com regiões planas nos pontos 35, 39 e 43. A tabela de mapeamento foi ajustada usando arquivos de configurações de testes usando mecanismo de sinalização proposto. Neste experimento, mantivemos deslocamento de QP de croma igual a 1 somente para a configuração AI. Para as configurações RA, LDB e LDP o deslocamento de QP de croma foi estabelecido para 0.
[0323] Tabela A: Desempenho de codificação de tabela de mapeamento ajustada em VTM5.0. All Intra Main10 Proposta Em VTM5.0 Y U V EncT DecT Classe A1 -1,17% 6,17% 4,96% 98% 100% Classe A2 -1,69% 5,20% 5,14% 97% 99% Classe B -0,63% 6,05% 6,77% 99% 101% Classe C -0,69% 5,78% 6,00% 99% 101% Classe E -0,62% 5,87% 6,34% 100% 101% Total -0,91% 5,84% 5,95% 99% 100% Classe D -0,67% 5,78% 6,16% 99% 99% Classe F (opcional) -0,75% 4,22% 4,24% 100% 100% Random Acess Main 10 Proposta Em VTM5.0 Y U V EncT DecT Classe A1 -2,34% 2,56% -0,45% 98% 100% Classe A2 -1,18% -2,76% -2,97% 98% 100% Classe B -0,21% -3,75% -3,11% 99% 100% Classe C -0,38% -1,69% -0,76% 99% 101% Classe E Total -0,88% -1,74% -1,92% 99% 101% Classe D -0,23% -2,44% -1,47% 100% 101% Classe F (opcional) -0,20% -2,26% -1,65% 99% 100% Low delay B Main10 Proposta Em VTM5.0
Y U V EncT DecT Classe A1 Classe A2 Classe B 0,06% -8,04% -7,29% 100% 101% Classe C 0,03% -4,25% -3,66% 100% 99% Classe E 0,16% -7,41% -6,86% 99% 101% Total 0,07% -6,62% -5,97% 100% 100% Classe D 0,05% -6,00% -4,16% 101% 104% Classe F (opcional) -0,04% -3,20% -2,48% 99% 100% Low delay P Main10 Proposta Em VTM5.0 Y U V EncT DecT Classe A1 Classe A2 Classe B 0,06% -8,18% -7,40% 99% 100% Classe C -0,07% -4,69% -3,63% 99% 100% Classe E 0,08% -7,54% -8,13% 100% 101% Total 0,02% -6,86% -6,33% 99% 100% Classe D 0,13% -6,53% -5,06% 100% 101% Classe F (opcional) 0,01% -2,69% -2,81% 100% 100%
[0324] Foi notado que uso de VTM5.0 como uma âncora induz cruzamento de curvas RD para algumas sequências. Isso pode criar números de taxa BD não pertinentes. Para obter números corretos estimamos desempenho em VTM5.0 ao pegar diferença em desempenho de VTM5.0 e testar com tabela de mapeamento ajustada em HM. Na Tabela B a seguir a parte esquerda denota a diferença de taxa BD com VTM5.0, a parte intermediária reporta desempenho de codificação de tabela ajustada em HM16.20, e a parte direita é desempenho de codificação de VTM5.0 em HM dada para comparação. Tabela B: Diferença em desempenho de codificação de tabela de mapeamento ajustada em VTM5.0 tendo HM como uma âncora All Intra Main10 Delta Em VTM-5.0 Proposta Em HM16.20 VTM5.0 Em HM16.20 Enc Dec Enc Dec Enc Dec
Y U V T T Y U V T T Y U V
T T - - - - - - - 4,72 3.72 100 228 211 227 210 Classe A1 0,92 % % 98% % 27,55 35,08 33,54 9% % 26,64 39,80 37.26 7% % % % % % % % % - - - - - - - 3,29 4,35 366 220 367 220 Classe A2 1,47 % % 97% 99% 26,45 22,54 15,17 2% % 24,98 25,83 19,52 6% % % % % % % % % - - - - - - - 4,75 5,38 101 393 225 387 220 Classe B 0,53 % % 99% % 20,97 20,13 27,59 2% % 20,45 24,88 32.98 2% % % % % % % % % - - - - - - - 4,25 4,48 101 532 232 522 222 Classe C 0,58 % % 99% % 21,93 17,92 22,77 8% % 21,35 22,17 27,25 6% % % % % % % % % - - - - - - - 5,87 6,34 100 101 300 217 292 209 Classe E 0,51 % % % % 25,20 19,51 24,69 7% % 24,70 24,59 29,92 8% % % % % % % % % - - - - - - - 4,45 4,71 100 363 222 358 217 Total 0,76 % % 99% % 23,90 22,43 24,96 2% % 23,14 26,88 29,67 5% % % % % % % % % - - - - - - - 5,16 5,70 614 221 604 213 Classe D 0,58 % % 99% 99% 18,04 13,77 15,95 9% % 17,46 18,93 21,66 0% % % % % % % % % Classe F - - - - - - - 2,50 2,37 100 100 529 220 512 213 0,54 38,69 37,15 39,71 38,15 39,65 42,08 (opcional) % % % % % % % % 0% % % % % 4% % Random Access Main 10 Delta Em VTM-5,0 Proposta Em HM16,20 VTM5,0 Em HM16,20 Enc Dec Enc Dec Enc Dec
Y U V T T Y U V T T Y U V
T T - - - - - - - 3,34 1,33 100 926 231 921 228 Classe A1 1,80 % % 98% % 36,71 36,50 41,69 % % 34,92 39,81 43,03 % % % % % % % % % - - - - - - - - - 100 101 236 100 233 Classe A2 1,09 0,83 1,26 98% % 40,12 37,86 31,98 1% % 39,04 37,01 30,74 5% % % % % % % % % % % - - - - - - - - - 100 102 226 100 223 Classe B 0,20 1,04 0,45 99% % 32,97 38,92 40,65 2% % 32,76 37,86 40,19 6% % % % % % % % % % % - - - - - - - - - 101 133 239 130 230 Classe C 0,36 1,06 0,11 99% % 28,21 28,14 31,23 5% % 27,86 27,10 31,11 9% % % % % % % % % % % Classe E - - - - - - - - - 101 107 232 106 228 Total 0,74 0,13 0,16 99% % 33,88 35,35 36,61 4% % 33,14 35,21 36,45 0% % % % % % % % % % % - - - - - - - - - 100 101 152 242 149 232 Classe D 0,23 1,35 0,09 % % 26,31 26,11 28,32 6% % 26,07 24,83 28,17 2% % % % % % % % % % % Classe F - - - - - - - - - 100 737 207 725 201 0,30 1,31 0,89 99% 40,11 41,99 43,80 39,81 40,67 42,91 (opcional) % % % % % % % % % % % % % % Low delay B Main10 Delta Em VTM-5,0 Proposta Em HM16,20 VTM5,0 Em HM16,20 Enc Dec Enc Dec Enc Dec
Y U V T T Y U V T T Y U V
T T Classe A1 Classe A2 - - - - - - - - - 100 101 206 196 Classe B 0,01% 4,66% 3,77% % % 25,95 26,41 27,21 834% % 25,94 21,75 23,44 815% % % % % % % % - - - - - - - - - 100 1009 201 197 Classe C 0,04% 2,31% 1,44% % 99% 22,51 21,31 23,43 % % 22,47 18,99 21,99 985% % % % % % % % - - - - - - - - 101 164 160 Classe E 0,10%
7.41% 6,86% 99% % 25,48 28,30 31,92 440% % 25,58 23,94 28,23 433% % % % % % % % - - - - - - - - 100 100 193 187 Total 0,01% 3,80% 2,98% % % 24,69 25,18 27,13 757% % 24,69 21,38 24,15 741% % % % % % % % - - - - - - - - - 101 104 1104 213 1069 200 Classe D 0,01% 4,10% 1,93% % % 21,24 17,86 19,42 % % 21,22 13,76 17,49 % % % % % % % % Classe F - - - - - - - - - 100 168 165 (opciona 0,16% 1,67% 1,24% 99% % 36,47 37,86 39,29 556% % 36,30 36,19 38,05 544% % l) % % % % % % Low delay P Main10
Delta Em VTM-5,0 Proposta Em HM16,20 VTM5,0 Em HM16,20 Enc Dec Dec Dec
Y U V T T Y U V EncT
T Y U V EncT
T Classe A1 Classe A2 - - - - - - - - - 100 211 206 Classe B 0,03% 4,60% 3,55% 99% % 30,44 29,55 30,15 771% % 30,41 24,95 26,60 756% % % % % % % % - - - - - - - - - 100 211 206 Classe C 0,12% 2,54% 1,42% 99% % 24,69 22,33 24,25 936% % 24,57 19,79 22,83 918% % % % % % % % - - - - - - - - 100 101 171 166 Classe E 0,04% 3,84% 3,99% % % 29,13 32,44 36,22 392% % 29,16 28,61 32,22 385% % % % % % % % - - - - - - - - - 100 200 195 Total 0,04% 3,72% 2,95% 99% % 28,19 27,87 29,70 694% % 28,15 24,15 26,75 681% % % % % % % % - - - - - - - - 100 101 1041 208 1021 201 Classe D 0,04% 4,34% 2,93% % % 22,94 19,34 20,46 % % 22,98 15,00 17,53 % % % % % % % % Classe F - - - - - - - - - 100 100 175 171 (opciona 0,16% 1,34% 1,38% % % 36,27 37,56 39,27 579% % 36,11 36,22 37,88 565% % l) % % % % % %
[0325] Adicionalmente, a figura 13 ilustra um método de obter um parâmetro de quantização de crominância de acordo com a presente divulgação. A figura 13 ilustra o método de obter um parâmetro de quantização (QP) de crominância para componentes de crominância com base em um QP de luminância para um componente de luminância, em que o método é realizado por um decodificador. O método da figura 13 compreende: etapa 1601 de receber um fluxo de bits; etapa 1603 de analisar o fluxo de bits para obter o QP de luminância e informação em uma tabela de mapeamento de QP de croma que associa um índice de QP (QPi) ao QP de crominância (QPc); etapa 1605 de obter o QPi com base pelo menos em uma parte no QP de luminância; etapa 1607 de obter a tabela de mapeamento de QP de croma com base na informação obtida; etapa 1609 de obter um QPc com base na tabela de mapeamento de QP de croma obtida e no QPi obtido; e a etapa 1611 de obter parâmetro de quantização de crominância com base no QPc obtido.
[0326] Adicionalmente, a figura 14 ilustra um decodificador 30 de acordo com a presente divulgação. A figura 13 ilustra um decodificador 30 para obter um parâmetro de quantização (QP) de crominância para componentes de crominância com base em um QP de luminância para um componente de luminância. O decodificador da figura 13 compreende: uma unidade de recebimento 3001 configurada para receber um fluxo de bits; uma unidade de análise 3003 configurada para analisar o fluxo de bits para obter o QP de luminância e informação em uma tabela de mapeamento de QP de croma que associa um índice de QP (QPi) ao QP de crominância (QPc); uma primeira unidade de obtenção 3005 configurada para obter o QPi com base pelo menos em uma parte no QP de luminância; uma segunda unidade de obtenção 3007 configurada para obter a tabela de mapeamento de QP de croma com base na informação obtida; uma terceira unidade de obtenção 3009 configurada para obter um QPc com base na tabela de mapeamento de QP de croma obtida e no QPi obtido; e uma quarta unidade de obtenção 3011 configurada para obter parâmetro de quantização de crominância com base no QPc obtido.
[0327] Deve ser entendido que a primeira, segunda, terceira e a quarta unidade de obtenção 3005, 3007, 3009, 3011 estão mostradas como unidades separadas. Entretanto, duas ou mais ou todas estas unidades efetivamente podem sido concretizadas por meio de uma unidade de obtenção comum ou unidades de obtenção comuns, respectivamente. Operadores Matemáticos
[0328] Os operadores matemáticos usados neste pedido são similares àqueles usados na linguagem de programação C. Entretanto, os resultados de operações de divisão de número inteiro e de mudança aritmética são definidos mais precisamente, e operações adicionais são definidas, tais como exponenciação e divisão com valor real. Convenções de numeração e de contagem de uma maneira geral começam de 0, por exemplo, “o primeiro” é equivalente ao de ordem 0, “o segundo” é equivalente ao de ordem 1, etc. Operadores Aritméticos
[0329] Os operadores aritméticos seguintes são definidos tal como indicado: + Adição Subtração (tal como um operador de dois − argumentos) ou negação (tal como um operador de prefixo unário) Multiplicação, incluindo multiplicação de * matriz Exponenciação: Especifica x à potência de y. Em outros contextos tal notação é usada para xy sobrescrição não pretendida para interpretação como exponenciação Divisão de número inteiro com truncamento do resultado para zero. Por exemplo, 7 / 4 e −7 / / −4 são truncados para 1 e −7 / 4 e 7 / −4 são truncados para −1 Usado para denotar divisão nas equações ÷ matemáticas onde truncamento ou arredondamento não é pretendido Usado para denotar divisão nas equações
X y matemáticas onde truncamento ou arredondamento não é pretendido y A soma de f( i ) com i tendo todos os valores f( i ) I = x inteiros de x até e incluindo y Módulo. Resto de x dividido por y, definido x % y somente para números inteiros x e y com x >= 0 e y > 0. Operadores Lógicos
[0330] Os operadores lógicos seguintes são definidos tal como indicado: x && y Lógica booleana “e” de x e y x | | y Lógica booleana “ou” de x e y ! Lógica booleana “não” x ? y : z Se x é VERDADEIRO ou não igual a 0, avalia para o valor de y; de outro modo, avalia para o valor de z. Operadores Relacionais
[0331] Os operadores relacionais seguintes são definidos tal como indicado: > Maior que >= Igual ou maior que < Menor que <= Igual ou menor que = = Igual a != Não igual a.
[0332] Quando um operador relacional é aplicado a um elemento de sintaxe ou variável que tenha sido designado com 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” é considerado para não ser igual a qualquer outro valor. Operadores Bit a Bit
[0333] Os operadores bit a bit seguintes são definidos tal como indicado: & Bit a bit “e”. Ao operar em argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que um outro argumento, o argumento menor é estendido ao adicionar bits mais significativos iguais a 0 | Bit a bit “ou”. Ao operar em argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que um outro argumento, o argumento menor é estendido ao adicionar bits mais significativos iguais a 0 ^ Bit a bit “ou exclusivo”. Ao operar em argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que um outro argumento, o argumento menor é estendido ao adicionar bits mais significativos iguais a 0 X >> y Deslocamento aritmético para a direita de uma representação inteira de complemento de dois de x por y dígitos binários. Esta função é definida somente para valores inteiros não negativos de y. Bits deslocados para os bits mais significativos (MSBs) como um resultado do deslocamento para a direita têm um valor igual ao MSB de x antes da operação de deslocamento X << y Deslocamento aritmético para a esquerda de uma representação inteira de complemento de dois de x por y dígitos binários. Esta função é definida somente para valores inteiros não negativos de y. Bits deslocados para os bits menos significativos (LSBs) como um resultado do deslocamento para a esquerda têm um valor igual a 0. Operadores de Designação
[0334] Os operadores aritméticos seguintes são definidos tal como indicado: = Operador de designação
+ + Incremento, isto é, x+ + é equivalente a x = x + 1; quando usado em um índice de arranjo, avalia para o valor da variável antes da operação de incremento − − Decremento, isto é, x− − é equivalente a x = x – 1; quando usado em um índice de arranjo, avalia para o valor da variável antes da operação de decremento += Incremento por quantidade especificada, isto é, x += 3 é equivalente a x = x + 3, e x += (−3) é equivalente a x = x + (−3) −= Decremento por quantidade especificada, isto é, x −= 3 é equivalente a x = x – 3, e x −= (−3) é equivalente a x = x – (−3). Notação de Faixa
[0335] A notação seguinte é usada para especificar uma faixa de valores: x = y..z x assume valores inteiros iniciando de y para z, inclusivo, com x, y e z sendo números inteiros e z sendo maior que y. Funções Matemáticas
[0336] As funções matemáticas seguintes são definidas: x ; x >= 0 Abs( x ) = −x ; x < 0 Asin( x ) a função trigonométrica inversa de seno, operando em um argumento x que está na faixa de −1,0 a 1,0, inclusivo, com um valor de saída na faixa de −π÷2 a π÷2, inclusivo, em unidades de radianos Atan( x ) a função trigonométrica inversa de tangente, operando em um argumento x, com um valor de saída na faixa de –π÷2 a π÷2, inclusivo, em unidades de radianos y ⎧ Atan x ; x > 0 ⎪ y ⎪ Atan x + π ; x < 0 && y >= 0 Atan2( y, x ) = y ; x < 0 && y < 0 Atan x – π ⎨ π ⎪ +2 ; x = = 0 && y >= 0 ⎪ π −2 ; de outro modo ⎩ Ceil( x ) o menor número inteiro igual ou maior que x Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) – 1, x ) Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) – 1, x ) x ; z < x Clip3( x, y, z ) = y ; z > y z ; de outro modo Cos( x ) a função trigonométrica de cosseno operando em um argumento x em unidades de radianos Floor( x ) o maior número inteiro igual ou menor que x c + d ; b − a >= d / 2 GetCurrMsb( a, b, c, d ) = c−d ; a−b > d / 2 c ; de outro modo Ln( x ) o logaritmo natural de x (o logaritmo de base e, onde e é a constante de base de logaritmo natural 2,718 281 828,..) Log2( x ) o logaritmo de x de base 2 Log10( x ) o logaritmo de x de base 10 x ; x <= y Min( x, y ) = y ; x > y x ; x >= y Max( x, y ) = y ; x < y
Round( x ) = Sign( x ) * Floor( Abs( x ) + 0,5 ) 1 ; x > 0 Sign( x ) = 0 ; x = = 0 −1 ; x < 0 Sin( x ) a função trigonométrica de seno operando em um argumento x em unidades de radianos Sqrt( x ) = √x Swap( x, y ) = ( y, x )
Tan( x ) a função trigonométrica de tangente operando em um argumento x em unidades de radianos. Ordem de Precedência de Operação
[0337] Quando uma ordem de precedência em uma expressão não é indicada explicitamente pelo uso de parênteses, as seguintes regras se aplicam: - operações de uma maior precedência são avaliadas antes de qualquer operação de uma menor precedência; - operações da mesma precedência são avaliadas sequencialmente da esquerda para a direita.
[0338] A tabela abaixo especifica a precedência de operações da mais alta para a mais baixa; uma posição mais alta na tabela indica uma precedência maior.
[0339] Para aqueles operadores que também são usados na linguagem de programação C, a ordem de precedência usada neste relatório descritivo é a mesma usada na linguagem de programação C.
[0340] Tabela: Precedência de operação da mais alta (na parte superior da tabela) para a mais baixa (na parte inferior da tabela).
operações (com operandos x, y e z” "”++”, "x” –” ”!x“, ”−x" (como um operador de prefixo unário) x“ "x ” y”, "x ” y”, "x ” y”, "”", "” % y"” "” + y"” "“ −–y"”(como um operador de dois argumentos), " "” ” "“ << y"” "“ >> y"” "“ < y"” "” <= y"” "” > y"” "” >= y"” "” = = y"” "” != y"”
"” & y"” "” | y"” "” && y"” "“ | | y"” "” ? y : z"” "”..y"” "” = y"” "” += y"” "” −= y"” Descrição de Texto de Operações Lógicas
[0341] No texto, uma declaração de operações lógicas que seria descrita matematicamente na seguinte forma: if( condition 0 ) statement 0 else if( condition 1 ) statement 1 ... else /* informative remark on remaining condition */ statement n pode ser descrita no seguinte modo: ... como se segue / ... o seguinte se aplica: - se condição 0, declaração 0 - de outro modo, se condição 1, declaração 1 - ... - de outro modo (observação informativa em condição remanescente), declaração n.
[0342] Cada declaração "“f ... De outro modo, se ... De outro modo, ..”.” no texto é introduzida com "“.. como se segue"” ou "“.. o seguinte se aplica"” seguido imediatamente por "“f ... "“. A última condição do "“f ... De outro modo, se ... De outro modo, ... "” é sempre um
"“assim sendo, ... "”. Declarações intercaladas "“f ... De outro modo, se ... De outro modo, ... "” podem ser identificadas ao casar "“.. Como se segue"” ou "“.. o seguinte se aplica"” com a terminação "“assim sendo, ..."”.
[0343] No texto, uma declaração de operações lógicas que seria descrita matematicamente na seguinte forma: if( condition 0a && condition 0b ) statement 0 else if( condition 1a | | condition 1b ) statement 1 ... else statement n pode ser descrito na seguinte modo: ... como se segue / ... o seguinte se aplica: - se todas as condições seguintes forem verdadeiras, declaração 0: - condição 0a - condição 0b - de outro modo, se um ou mais das condições seguintes forem verdadeiras, declaração 1: - condição 1a - condição 1b - ... - de outro modo, declaração n.
[0344] No texto, uma declaração de operações lógicas que seria descrita matematicamente na seguinte forma: if( condition 0 )
statement 0 if( condition 1 ) statement 1 pode ser descrita no seguinte modo: quando condição 0, declaração 0 quando condição 1, declaração 1.
[0345] Embora modalidades da invenção tenham sido descritas principalmente com base em codificação de vídeo, deve ser notado que modalidades do sistema de codificação 10, do codificador 20 e do decodificador 30 (e correspondentemente do sistema 10) e as outras modalidades descritas neste documento também podem ser configuradas para processamento ou codificação de imagem estática, isto é, o processamento ou codificação de uma imagem individual independente de qualquer imagem precedente ou consecutiva tal como em codificação de vídeo. De uma maneira geral somente as unidades de predição inter 244 (codificador) e 344 (decodificador) não precisam estar disponíveis no caso em que a codificação de processamento de imagem é limitada a uma única imagem 17, Todas as outras funcionalidades (também referidas como ferramentas ou tecnologias) do codificador de vídeo 20 e do decodificador de vídeo 30 podem ser usadas igualmente para processamento de imagem estática, por exemplo, o cálculo residual 204/304, a transformada 206, a quantização 208, a quantização inversa 210/310, a transformada (inversa) 212/312, a partição 262/362, a predição intra 254/354 e/ou a filtragem de laço 220, 320, e a codificação de entropia 270 e a decodificação de entropia 304.
[0346] Modalidades, por exemplo, do codificador 20 e do decodificador 30, e funções descritas neste documento, por exemplo, com referência para o codificador 20 e o decodificador 30, podem ser implementadas em hardware, software, firmware ou em qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em um meio legível por computador ou transmitidas por meio de mídias de comunicação como uma ou mais instruções ou códigos e executados por uma unidade de processamento baseada em hardware. Meio legível por computador pode incluir meio de armazenamento legível por computador, o qual corresponde a um meio tangível tal como meio de armazenamento de dados, ou meio de comunicação incluindo qualquer meio que facilite transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Neste modo, meio legível por computador de uma maneira geral pode corresponder a (1) meio de armazenamento tangível legível por computador, o qual não é transitório, ou (2) um meio de comunicação tal como um sinal ou onda portadora. Meio de armazenamento de dados pode ser qualquer meio disponível que pode ser acessado por um ou mais computadores ou por um ou mais processadores para recuperar instruções, códigos e/ou estruturas de dados para implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[0347] A título de exemplo, e não de limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco ótico, armazenamento de disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que pode ser usado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que pode ser acessado por um computador. Também, qualquer conexão é denominada de modo apropriado como um meio legível por computador. Por exemplo, se instruções forem transmitidas de um website, servidor ou de outra fonte remota usando um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio tais como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra ótica, par trançado, DSL ou tecnologias sem fio tais como infravermelho, rádio e micro-onda estão incluídos na definição de meio. Deve ser entendido, entretanto, que meio de armazenamento legível por computador e meio de armazenamento de dados não incluem conexões, ondas portadoras, sinais, ou outro meio transitório, mas em vez disso são direcionados para meios de armazenamento tangíveis não transitórios. Disco, tal como usado neste documento, inclui disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disco flexível e disco Blue-ray, onde discos usualmente reproduzem dados magneticamente enquanto que outros discos reproduzem dados oticamente com lasers. Combinações dos indicados acima também devem ser incluídas no escopo do meio legível por computador.
[0348] Instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASICs), matrizes lógicas programáveis em campo (FPGAs), ou outro conjunto de circuitos lógicos integrados ou distintos equivalentes. Portanto, o termo “processador”, tal como usado neste documento, pode se referir a qualquer uma das estruturas indicadas anteriormente ou a qualquer outra estrutura adequada para implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade descrita neste documento pode ser fornecida dentro de módulos de hardware e/ou de software dedicados configurados para codificação e decodificação, ou incorporada em um codec combinado. Também, as técnicas podem ser implementadas totalmente em um ou mais circuitos ou elementos lógicos.
[0349] As técnicas desta divulgação podem ser implementadas em uma grande variedade de dispositivos ou aparelhos, incluindo um aparelho de telefone 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 divulgação para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas divulgadas, mas não exigem necessariamente realização por unidades de hardware diferentes. Particularmente, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores tais como descritos acima, em combinação com software e/ou firmware adequado.
[0350] Um método de obter um parâmetro de quantização (QP) de crominância para componentes de crominância com base em um QP de luminância para componente de luminância, em que o método é realizado por um decodificador, compreendendo: analisar um fluxo de bits recebido para obter o QP de luminância e informação de uma função de mapeamento (f) que associa um índice de QP (QPi) ao QP de crominância (QPc); obter o QPi com base pelo menos em uma parte no QP de luminância; obter a função de mapeamento com base na informação obtida; e obter um QPc com base na função de mapeamento obtida e no QPi obtido.
[0351] O método do item acima, em que a função de mapeamento associa cada elemento x de um conjunto X, em que o conjunto X corresponde a QPis em faixa de QPis permitida suportada pelo decodificador, (por exemplo, 0 a 63 ou uma outra parte de faixa suportada, por exemplo, 20 a 50), ou de qualquer subconjunto do conjunto X, a um elemento y de um conjunto Y, em que o conjunto Y corresponde a QPcs na faixa de QPcs permitida suportada pelo decodificador (por exemplo, 0 a 63 ou uma outra parte de faixa suportada, por exemplo, 0 a 59 ou 18 a 46).
[0352] Por exemplo, a faixa de QPis e a faixa de QPcs podem ser a mesma, ou podem ser diferentes.
[0353] O método exposto acima, em que a função de mapeamento é uma função monotonicamente crescente (não decrescente).
[0354] O método do item acima, em que o conjunto X inclui um subconjunto A no qual a função de mapeamento f é não crescente, por exemplo: f(x) - f(x-1) = 0 para qualquer x do subconjunto A.
[0355] Por exemplo, A = { 30, 39, 43 }, f(30) - f(29) = 0, f(39) - f(38) = 0, ou f(43) - f(42) = 0; ou A = { 35, 39, 43}, f(35) - f(34) = 0, f(39) - f(38) = 0, ou f(43) - f(42) = 0.
[0356] O método do item acima, em que o conjunto X inclui um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que A+B=X e c é um número natural não menor que 1.
[0357] Por exemplo, c =1 ou 2, etc., ou c pode ser uma função de x e c(x) >= 1.
[0358] O método de qualquer item acima, em que o conjunto X inclui um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que c é um número natural não menor que 1.
[0359] Por exemplo, c =1 ou 2, etc., ou c pode ser uma função de x e c(x) >= 1.
[0360] A presente divulgação divulga os quarenta e um aspectos adicionais seguintes, listados do primeiro ao quadragésimo primeiro aspecto como se segue.
[0361] Um primeiro aspecto de um método de obter um parâmetro de quantização (QP) de crominância para componentes de crominância com base em um QP de luminância para componente de luminância, em que o método é realizado por um decodificador, compreendendo: analisar um fluxo de bits recebido para obter o QP de luminância e informação de uma função de mapeamento (f) que associa um índice de QP (QPi) ao QP de crominância (QPc); obter o QPi com base pelo menos em uma parte no QP de luminância; obter a função de mapeamento com base na informação obtida; e obter um QPc com base na função de mapeamento obtida e no QPi obtido.
[0362] Um segundo aspecto de um método do primeiro aspecto, em que a função de mapeamento associa cada elemento x de um conjunto X, em que o conjunto X corresponde a QPis em faixa de QPis permitida suportada pelo decodificador, ou de qualquer subconjunto do conjunto X, a um elemento y de um conjunto Y, em que o conjunto Y corresponde a QPcs na faixa de QPcs permitida suportada pelo decodificador.
[0363] Um terceiro aspecto de um método de acordo com o segundo aspecto, em que a função de mapeamento é uma função monotonicamente crescente (não decrescente).
[0364] Um quarto aspecto de um método de acordo com o segundo ou terceiro aspecto, em que o conjunto X inclui um subconjunto A no qual a função de mapeamento f é não crescente, por exemplo: f(x) - f(x-1) = 0 para qualquer x do subconjunto A.
[0365] Um quinto aspecto de um método de acordo com o quarto aspecto, em que o conjunto X inclui um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que A+B=X e c é um número natural não menor que 1.
[0366] Um sexto aspecto de um método de acordo com qualquer um do segundo ao quarto aspecto, em que o conjunto X inclui um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que c é um número natural não menor que
1.
[0367] Um sétimo aspecto de um método de acordo com o quinto ou sexto aspecto, em que a função de mapeamento f no subconjunto B é definida tal como a seguir: f(x) - f(x- 1) = 1, para qualquer x do subconjunto B.
[0368] Um oitavo aspecto de um método de acordo qualquer um do primeiro ao sétimo aspecto, em que a informação da função de mapeamento compreende informação do tamanho do subconjunto A (sizeA) e elementos ai do subconjunto A.
[0369] Um nono aspecto de um método de acordo qualquer um do primeiro ao oitavo aspecto, em que a informação da função de mapeamento compreende o tamanho do subconjunto A.
[0370] Um décimo aspecto de um método de acordo com qualquer um do primeiro ao nono aspecto, em que a informação da função de mapeamento compreende valores diretos de elementos ai do subconjunto A.
[0371] Um décimo primeiro aspecto de um método de acordo com qualquer um do oitavo ao décimo aspecto, em que a informação da função de mapeamento compreende uma diferença (delta_ai) entre um valor atual do elemento ai e um valor anterior do elemento ai-1, e valores ai são obtidos tal como a seguir: ai = ai-1 + delta_ai, para qualquer i >
0.
[0372] Um décimo segundo aspecto de um método de acordo com qualquer um do oitavo ao décimo aspecto, em que a informação da função de mapeamento compreende uma diferença (delta_a0) entre um primeiro valor a0 e um starting_point_value, em que o primeiro valor a0 do subconjunto A é obtido com base na diferença (delta_a0) tal como a seguir: a0 = starting_point_value + delta_ao, em que starting_point_value é sinalizado no fluxo de bits ou é um valor predefinido, por exemplo, 0, 21, 30, maxQPi >> 1, em que maxQPi é o valor de QPi máximo suportado pelo decodificador, por exemplo, 63.
[0373] Um décimo terceiro aspecto de um método de acordo com qualquer um do primeiro ao décimo segundo aspecto, em que a informação da função de mapeamento é sinalizada no fluxo de bits usando qualquer um dos seguintes códigos: código binário, de comprimento fixo, unário, unário truncado, binário truncado, Golomb ou Exp- Golomb.
[0374] Um décimo quarto aspecto de um método de acordo com qualquer um do primeiro ao décimo terceiro aspecto, em que a função de mapeamento é obtida usando comportamento de função definido em subconjuntos A e B, isto é, para qualquer argumento de entrada x do subconjunto B a função aumenta, por exemplo, por 1 tal como f(x)-f(x-1) = 1, e para qualquer argumento de entrada x do subconjunto A a função é plana tal como f(x)-f(x-1) = 0; tendo uma suposição de que primeiro valor de função de mapeamento correspondendo a x=0 é 0; Por exemplo, isto pode ser implementado iterativamente usando o seguinte pseudocódigo: chroma_qp_mapping_table[θ] = θ; // inicialização for (i = 1; i <= maxQP; i++) // maxQP é QP máximo suportado por decodificador { int incStep = 1; // incremento de função para conjunto B for (j = 0; j < cQpFlatSize; j++) // cQpFlatSize é tamanho de conjunto A
{ if (i == cQpFlat[j]) // arranjo de cQpFlat com elementos de conjunto A { incStep = 0; // incremento de função zero para conjunto A (plano) break: } } chroma_qp_mapping_table[i] = chroma_qp_mapping_table[i-1] + incStep; }.
[0375] Um décimo quinto aspecto de um método de acordo com qualquer um do quarto ao décimo quarto aspecto, em que a informação da função de mapeamento compreende informação de valores b do subconjunto B, e o subconjunto A é obtido como A=X-B.
[0376] Um décimo sexto aspecto de um método de acordo com qualquer um do quarto ao décimo quarto aspecto, em que o subconjunto B inclui um sub-subconjunto Bk, em que o sub-subconjunto Bk inclui elementos x nos quais a função de mapeamento tem o mesmo incremento ck: f(x) - f(x-1) = ck, se x ∈ Bk, em que ck é um número natural. Por exemplo, ck igual a 0, 1, 2, 3, 4 .... Em outras palavras, o subconjunto B pode ser dividido em sub-subconjuntos diferentes dependendo da quantidade de exasperação de função de mapeamento em pontos x do sub-subconjunto Bk.
[0377] Um décimo sétimo aspecto de um método de acordo com o décimo sexto aspecto, em que a informação da função de mapeamento compreende informação do tamanho de pelo menos um dos sub-subconjuntos Bk (tamanho Bk) e elementos bi de pelo menos um dos sub-subconjuntos Bk.
[0378] Um décimo oitavo aspecto de um método de acordo com o décimo sexto ou décimo sétimo aspecto, em que a informação da função de mapeamento compreende informação do valor de incremento da função de mapeamento em pontos do sub-subconjunto Bk.
[0379] Um décimo nono aspecto de um método de acordo com o décimo sexto ou décimo sétimo aspecto, em que a informação da função de mapeamento compreende informação da quantidade de sub-subconjuntos Bk.
[0380] Um vigésimo aspecto de um método de acordo com qualquer um do décimo sexto ao décimo nono aspecto, em que pelo menos uma parte da informação da função de mapeamento (por exemplo, a informação dos sub-subconjuntos Bk) é obtida usando a seguinte sintaxe. cqp_set_num_m1 ue(v) for ( k = 0; k <= cqp_set_num_m1; k++ ) { cqp_set_inc[ k ] ue(v) cqp_set_size_m1[ k ] ue(v) cqp_set_p0[k] ue(v) for ( i = 1; i <= cqp_set_size_m1[ k ]; i++ ) cqp_set_delta_m1[ k ][ i ] ue(v) }
[0381] Um vigésimo primeiro aspecto de um método de acordo com qualquer um do décimo sexto ao décimo nono aspecto, em que pelo menos uma parte da informação da função de mapeamento (por exemplo, a informação dos sub- subconjuntos Bk) é obtida usando a seguinte sintaxe.
cqp_set_num_m1 ue(v) for ( k = 0; k <= cqp_set_num_m1; k++ ) { cqp_set_inc[ k ] ue(v) cqp_set_size_m1[ k ] ue(v) cqp_set_p0[k] u(7) for ( i = 1; i <= cqp_set_size_m1[ k ]; i++ ) cqp_set_delta_m1[ k ][ i ] ue(v) }
[0382] Um vigésimo segundo aspecto de um método de acordo com o segundo ou terceiro aspecto, em que a função de mapeamento é uma função por partes, e a informação da função de mapeamento compreende pontos de interrupção, ou pontos de mudanças, ou pontos pivôs da função por partes.
[0383] Um vigésimo terceiro aspecto de um método de acordo com o vigésimo segundo aspecto, em que quantidade de pontos de interrupção, ou pontos de mudanças, ou pontos pivôs e suas coordenadas x e y são sinalizadas no fluxo de bits de forma direta ou usando diferenças entre coordenadas de ponto atual e coordenadas de ponto anterior.
[0384] Um vigésimo quarto aspecto de um método de acordo com o vigésimo segundo ou vigésimo terceiro aspecto, em que a função de mapeamento é uma função por partes baseada em: equação linear; equação exponencial; equação logarítmica; ou combinações das equações acima.
[0385] Um vigésimo quinto aspecto de um método de acordo com o vigésimo quarto aspecto, em que parâmetros das funções por partes são obtidos com base em pontos pivôs; por exemplo, como um exemplo para equação linear: inclinação = (Ey - Dy)/(Ex - Dx), b = Dy + inclinação*Dx;
em que D (94) e E (95) são pontos de mudanças exemplares com as coordenadas Dx, Dy e Ex, Ey correspondentemente, e inclinação e b são parâmetros de equação linear, tal como y = inclinação*x + b.
[0386] Um vigésimo sexto aspecto de um método de acordo com o segundo ou terceiro aspecto, em que o conjunto X inclui um subconjunto C; a informação da função de mapeamento compreende informação de índice de início (x_start) do subconjunto C e índice de término (x_end) do subconjunto C.
[0387] Um vigésimo sétimo aspecto de um método de acordo com o vigésimo quinto ou vigésimo sexto aspecto, em que a informação da função de mapeamento compreende informação dos valores de deltas da função de mapeamento f(x) - f(x-1), para qualquer x do subconjunto C.
[0388] Um vigésimo oitavo aspecto de um método de acordo com o vigésimo sétimo aspecto, em que os valores de deltas são obtidos usando a seguinte sintaxe: sps_qpc_x_start u(7) sps_qpc_x_end u(7) for( i = sps_qpc_x_start; i <= sps_qpc_x_end; i++ ) sps_qpc_cb_delta[ i ] ue(v) em que sps_qpc_cb_delta[ i ] representa os valores de deltas.
[0389] Um vigésimo nono aspecto de um método de acordo com o vigésimo sétimo aspecto, em que os valores de deltas estão na faixa de 0 a 1.
[0390] Um trigésimo aspecto de um método de acordo com o vigésimo nono aspecto, em que os valores de deltas são obtidos usando a seguinte sintaxe: sps_qpc_x_start u(7) sps_qpc_x_end u(7) for( i = sps_qpc_x_start; i <= sps_qpc_x_end; i++ ) sps_qpc_cb_delta[ i ] ue(1) em que sps_qpc_cb_delta[ i ] representa os valores de deltas.
[0391] Um trigésimo primeiro aspecto de um método de acordo com qualquer um do vigésimo sexto ao trigésimo aspecto, em que a informação da função de mapeamento é sinalizada usando qualquer um dos seguintes códigos: código binário, de comprimento fixo, unário, unário truncado, binário truncado, Golomb ou Exp-Golomb.
[0392] Um trigésimo segundo aspecto de um método de acordo com qualquer um do primeiro ao trigésimo primeiro aspecto, em que o decodificador compreende adicionalmente uma função de mapeamento predefinida, e o fluxo de bits compreende um indicador indicando se é para usar a função de mapeamento predefinida ou usar uma função de mapeamento sinalizada no fluxo de bits.
[0393] Um trigésimo terceiro aspecto de um método de acordo com qualquer um do primeiro ao trigésimo segundo aspecto, em que a informação da função de mapeamento é sinalizada para ambos os componentes Cb e Cr (componentes de crominância).
[0394] Um trigésimo quarto aspecto de um método de acordo com qualquer um do primeiro ao trigésimo terceiro aspecto, em que a informação da função de mapeamento compreende um indicador indicando se função de mapeamento é sinalizada para componentes Cb e Cr separadamente ou conjuntamente.
[0395] Um trigésimo quinto aspecto de um método de acordo com qualquer um do primeiro ao trigésimo quarto aspecto, em que a informação da função de mapeamento é sinalizada em: nível de sequência em conjunto de parâmetros de sequência, ou nível de imagem em conjunto de parâmetros de imagem, ou nível de grupo de peças em conjunto de parâmetros de grupo de peças, ou em conjunto de parâmetros de adaptação, ou em mensagem de informação suplementar de enriquecimento (SEI).
[0396] Um trigésimo sexto aspecto de um método de acordo com qualquer um do primeiro ao trigésimo quinto aspecto, em que a função de mapeamento é expressa como uma tabela tal como a seguir.
qPi < 30 30 31 32 33 34 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 29 30 31 32 33 34 35 36 37 37 38 39 40 40 = qPi − 3
[0397] Um trigésimo sétimo aspecto de um método de acordo com qualquer um do primeiro ao trigésimo sexto aspecto, em que a função de mapeamento é expressa como uma tabela tal como a seguir. qPi < 35 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 34 35 36 37 37 38 39 40 40 = qPi − 3
[0398] Um trigésimo oitavo aspecto de um método de acordo com qualquer um do primeiro ao trigésimo sétimo aspecto, em que a informação da função de mapeamento é sinalizada no fluxo de bits diretamente ou indiretamente.
[0399] Um trigésimo nono aspecto de um decodificador (30) compreendendo conjunto de circuitos de processamento para executar o método de acordo com qualquer um do primeiro ao trigésimo oitavo aspecto.
[0400] Um quadragésimo aspecto de um produto de programa de computador compreendendo um código de programa para realizar o método de acordo com qualquer um do primeiro ao trigésimo oitavo aspecto.
[0401] Um quadragésimo primeiro aspecto de um decodificador, compreendendo: um ou mais processadores; e um meio de armazenamento não transitório legível por computador acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para executar o método de acordo com qualquer um do primeiro ao trigésimo oitavo aspecto.
[0402] Além disso, a presente divulgação divulga os seguintes vinte e cinco aspectos adicionais, listados do primeiro ao vigésimo quinto aspecto tal como a seguir.
[0403] Um primeiro aspecto de um método de obter parâmetro de quantização (QP) para componentes de crominância com base em QP para componente de luminância, em que o método é realizado por um decodificador, compreendendo: obter um QP de luminância; obter, ao analisar um fluxo de bits recebido, informação para obter uma função de mapeamento (f) que associa o QP de luminância ao QP de crominância; obter a função de mapeamento com base na informação obtida;
obter um QP de crominância com base na função de mapeamento.
[0404] Um segundo aspecto de um método do primeiro aspecto, em que a função de mapeamento associa cada elemento x de um conjunto X, em que o conjunto X corresponde a Qp de luminância em faixa de Qp de luminância permitida suportada pelo decodificador, (por exemplo, 0 a 63 ou uma outra parte de faixa suportada, por exemplo, 20 a 50), ou de qualquer subconjunto do conjunto X, a um elemento y de um conjunto Y, em que o conjunto Y corresponde a Qp de crominância em faixa de Qp de crominância permitida suportada pelo decodificador (por exemplo, 0 a 63 ou uma outra parte de faixa suportada, por exemplo, 0 a 59 ou 18 a 46). Por exemplo, a faixa de Qp de luminância e a faixa de Qp de crominância podem ser a mesma, ou podem ser diferentes.
[0405] Um terceiro aspecto de um método de acordo com o segundo aspecto, em que a função de mapeamento é uma função monotonicamente crescente (não decrescente).
[0406] Um terceiro aspecto de um método de acordo com o segundo aspecto, em que o conjunto X inclui um subconjunto A no qual a função de mapeamento f é não crescente, por exemplo: f(x) - f(x-1) = 0 para qualquer x do conjunto A (por exemplo, A = { 30, 39, 43 }). Por exemplo, f(30) - f(29) = 0, f(39) - f(38) = 0, ou f(43) - f(42) = 0,
[0407] Um quinto aspecto de um método de acordo com o segundo aspecto, em que o conjunto X inclui um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c, onde c é função de x e c(x) >= 1, para qualquer x do subconjunto B. Por exemplo, o subconjunto B pode igual a X - A, em outras palavras, o subconjunto A e o subconjunto B são dois subconjuntos não se sobrepondo de X tal como A+B=X.
[0408] Um sexto aspecto de um método de acordo com o quinto aspecto, em que a função de mapeamento f no subconjunto B é definida tal como a seguir: f(x) - f(x-1) = 1, para qualquer x do subconjunto B.
[0409] Um sétimo aspecto de um método de acordo com qualquer um do primeiro ao sexto aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende informação para obter tamanho do subconjunto A (sizeA) e elementos ai do subconjunto A.
[0410] Um oitavo aspecto de um método de acordo com o sétimo aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende tamanho do subconjunto A.
[0411] Um nono aspecto de um método de acordo com o sétimo aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende valores diretos de elementos ai.
[0412] Um décimo aspecto de um método de acordo com o sétimo aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende uma diferença (delta_ai) entre um valor atual do elemento ai e um valor anterior do elemento ai-1, e valores ai são obtidos tal como a seguir: ai = ai-1 + delta_ai, para qualquer i >
0.
[0413] Um décimo primeiro aspecto de um método de acordo com o sétimo aspecto, em que um primeiro valor a0 do subconjunto A é obtido com base em uma diferença (delta_a0) entre a0 e um starting_point_value, e em que a diferença (delta_ a0) é sinalizada no fluxo de bits, e o primeiro valor a0 é obtido tal como a seguir: a0 = starting_point_value + delta_ao, em que starting_point_value é sinalizado no fluxo de bits ou é um valor predefinido, por exemplo, 0, 21, 30, maxQP >> 1, em que maxQP é o valor de QP máximo suportado pelo decodificador, por exemplo, 63.
[0414] Um décimo segundo aspecto de um método de acordo com qualquer um do sétimo ao décimo primeiro aspecto, em que a informação para obter função de mapeamento do fluxo de bits é sinalizada usando qualquer um dos seguintes códigos: código binário, unário, unário truncado, binário truncado, Golomb ou Exp-Golomb.
[0415] Um décimo terceiro aspecto de um método de acordo com qualquer um do primeiro ao décimo primeiro aspecto, em que a função de mapeamento é obtida usando comportamento de função definido em subconjuntos A e B, isto é, para qualquer argumento de entrada x do subconjunto B a função aumenta, por exemplo, por 1 tal como f(x)-f(x-1) = 1, e para qualquer argumento de entrada x do subconjunto A a função é plana tal como f(x)-f(x-1) = 0; tendo uma suposição de que primeiro valor de função de mapeamento correspondendo a x=0 é 0, Por exemplo, isto pode ser implementado iterativamente usando o seguinte pseudocódigo: chroma_qp_mapping_table[θ] = θ; // inicialização for (i = 1; i <= maxQP; i++) // maxQP é QP máximo suportado por decodificador {
int incStep = 1; // incremento de função para conjunto B for (j = 0; j < cQpFlatSize; j++) // cQpFlatSize é tamanho de conjunto A { if (i == cQpFlat[j]) // arranjo de cQpFlat com elementos de conjunto A { incStep = 0; // incremento de função zero para conjunto A (plano) break: } } chroma_qp_mapping_table[i] = chroma_qp_mapping_table[i-1] + incStep; }.
[0416] Um décimo quarto aspecto de um método de acordo com qualquer um do quarto ao décimo segundo aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende informação para obter valores b do subconjunto B, e o subconjunto A é obtido como A=X-B.
[0417] Um décimo quinto aspecto de um método de acordo com o segundo aspecto, em que a função de mapeamento é uma função por partes, e a informação para obter função de mapeamento sinalizada no fluxo de bits compreende pontos de interrupção (ou pontos de mudanças, ou pontos pivôs) da função por partes.
[0418] Um décimo sexto aspecto de um método de acordo com o décimo quinto aspecto, em que quantidade de pontos de interrupção (ou pontos de mudanças, ou pontos pivôs) e suas coordenadas x e y são sinalizadas no fluxo de bits de forma direta ou usando diferenças entre coordenadas de ponto atual e coordenadas de ponto anterior.
[0419] Um décimo sétimo aspecto de um método de acordo com o décimo quinto ou décimo sexto aspecto, em que a função de mapeamento é uma função por partes baseada em: equação linear; equação exponencial; equação logarítmica; ou combinações das equações acima.
[0420] Um décimo oitavo aspecto de um método de acordo com o décimo sétimo aspecto, em que parâmetros das funções por partes são obtidos com base em pontos pivôs; por exemplo, como um exemplo para equação linear: inclinação = (Ey - Dy)/(Ex - Dx), b = Dy + inclinação*Dx, em que D (94) e E (95) são pontos de mudanças exemplares com as coordenadas Dx, Dy e Ex, Ey correspondentemente, e inclinação e b são parâmetros de equação linear, tal como y = inclinação*x + b.
[0421] Um décimo nono aspecto de um método de acordo com qualquer um do primeiro ao décimo oitavo aspecto, em que o decodificador compreende adicionalmente uma função de mapeamento predefinida, e o fluxo de bits compreende um indicador indicando se é para usar a função de mapeamento predefinida ou usar uma função de mapeamento sinalizada no fluxo de bits.
[0422] Um vigésimo aspecto de um método de acordo com qualquer um do primeiro ao décimo nono aspecto, em que a informação para obter função de mapeamento é sinalizada para ambos os componentes Cb e Cr (componentes de crominância).
[0423] Um vigésimo primeiro aspecto de um método de acordo com qualquer um do primeiro ao vigésimo aspecto, em que a informação para obter função de mapeamento compreende um indicador indicando se função de mapeamento é sinalizada para componentes Cb e Cr separadamente ou conjuntamente.
[0424] Um vigésimo segundo aspecto de um método de acordo com qualquer um do primeiro ao vigésimo primeiro aspecto, em que a informação para obter função de mapeamento é sinalizada em: nível de sequência em conjunto de parâmetros de sequência, nível de imagem em conjunto de parâmetros de imagem, ou nível de grupo de peças em conjunto de parâmetros de grupo de peças, ou em conjunto de parâmetros de adaptação.
[0425] Um vigésimo terceiro aspecto de um decodificador (30) compreendendo conjunto de circuitos de processamento para executar o método de acordo com qualquer um do primeiro ao vigésimo segundo aspecto.
[0426] Um vigésimo quarto aspecto de um produto de programa de computador compreendendo um código de programa para realizar o método de acordo com qualquer um do primeiro ao vigésimo segundo aspecto.
[0427] Um vigésimo quinto aspecto de um decodificador, compreendendo: um ou mais processadores; e um meio de armazenamento não transitório legível por computador acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para executar o método de acordo com qualquer um do primeiro ao vigésimo segundo aspecto.
[0428] Além disso, a presente divulgação divulga os seguintes trinta e dois aspectos adicionais, listados do primeiro ao trigésimo segundo aspectos como se segue.
[0429] Um primeiro aspecto de um método de obter um parâmetro de quantização (QP) de crominância para componentes de crominância com base em um QP de luminância para componente de luminância, em que o método é realizado por um decodificador, compreendendo: analisar um fluxo de bits recebido para obter o QP de luminância e informação de uma função de mapeamento (f) que associa um índice de QP (QPi) ao QP de crominância (QPc); obter o QPi com base pelo menos em uma parte no QP de luminância; obter a função de mapeamento com base na informação obtida; e obter um QPc com base na função de mapeamento obtida e no QPi obtido.
[0430] Um segundo aspecto de um método do primeiro aspecto, em que a função de mapeamento associa cada elemento x de um conjunto X, em que o conjunto X corresponde a QPis em faixa de QPis permitida suportada pelo decodificador, ou de qualquer subconjunto do conjunto X, a um elemento y de um conjunto Y, em que o conjunto Y corresponde a QPcs na faixa de QPcs permitida suportada pelo decodificador.
[0431] Um terceiro aspecto de um método de acordo com o segundo aspecto, em que a função de mapeamento é uma função monotonicamente crescente (não decrescente).
[0432] Um quarto aspecto de um método de acordo com o segundo aspecto, em que o conjunto X inclui um subconjunto A no qual a função de mapeamento f é não crescente, por exemplo: f(x) - f(x-1) = 0 para qualquer x do subconjunto A.
[0433] Um quinto aspecto de um método de acordo com o quarto aspecto, em que o conjunto X inclui um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que A+B=X e c é um número natural não menor que 1.
[0434] Um sexto aspecto de um método de acordo com qualquer um do segundo ao quarto aspecto, em que o conjunto X inclui um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que c é um número natural não menor que
1.
[0435] Um sétimo aspecto de um método de acordo com o quinto ou sexto aspecto, em que a função de mapeamento f no subconjunto B é definida tal como a seguir: f(x) - f(x- 1) = 1, para qualquer x do subconjunto B.
[0436] Um oitavo aspecto de um método de acordo qualquer um do primeiro ao sétimo aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende informação para obter tamanho do subconjunto A (sizeA) e elementos ai do subconjunto A.
[0437] Um nono aspecto de um método de acordo com o oitavo aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende tamanho do subconjunto A.
[0438] Um décimo aspecto de um método de acordo com o oitavo aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende valores diretos de elementos ai.
[0439] Um décimo primeiro aspecto de um método de acordo com o oitavo aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende uma diferença (delta_ai) entre um valor atual do elemento ai e um valor anterior do elemento ai-1, e valores ai são obtidos tal como a seguir: ai = ai-1 + delta_ai, para qualquer i > 0.
[0440] Um décimo segundo aspecto de um método de acordo com o oitavo aspecto, em que um primeiro valor a0 do subconjunto A é obtido com base em uma diferença (delta_a0) entre a0 e um starting_point_value, e em que a diferença (delta_ a0) é sinalizada no fluxo de bits, e o primeiro valor a0 é obtido tal como a seguir: a0 = starting_point_value + delta_ao, em que starting_point_value é sinalizado no fluxo de bits ou é um valor predefinido, por exemplo, 0, 21, 30, maxQPi >> 1, em que maxQPi é o valor de QPi máximo suportado pelo decodificador, por exemplo, 63.
[0441] Um décimo terceiro aspecto de um método de acordo com qualquer um do oitavo ao décimo segundo aspecto, em que a informação para obter função de mapeamento do fluxo de bits é sinalizada usando qualquer um dos seguintes códigos: código binário, unário, unário truncado, binário truncado, Golomb ou Exp-Golomb.
[0442] Um décimo quarto aspecto de um método de acordo com qualquer um do primeiro ao décimo primeiro aspecto, em que a função de mapeamento é obtida usando comportamento de função definido em subconjuntos A e B, isto é, para qualquer argumento de entrada x do subconjunto B a função aumenta, por exemplo, por 1 tal como f(x)-f(x-1) = 1, e para qualquer argumento de entrada x do subconjunto A a função é plana tal como f(x)-f(x-1) = 0; tendo uma suposição de que primeiro valor de função de mapeamento correspondendo a x=0 é 0, Por exemplo, isto pode ser implementado iterativamente usando o seguinte pseudocódigo: chroma_qp_mapping_table[θ] = θ; // inicialização for (i = 1; i <= maxQP; i++) // maxQP é QP máximo suportado por decodificador { int incStep = 1; // incremento de função para conjunto B for (j = 0; j < cQpFlatSize; j++) // cQpFlatSize é tamanho de conjunto A { if (i == cQpFlat[j]) // arranjo de cQpFlat com elementos de conjunto A { incStep = 0; // incremento de função zero para conjunto A (plano) break: } } chroma_qp_mapping_table[i] = chroma_qp_mapping_table[i-1] + incStep; }.
[0443] Um décimo quinto aspecto de um método de acordo com qualquer um do quarto ao décimo terceiro aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende informação para obter valores b do subconjunto B, e o subconjunto A é obtido como A=X-B.
[0444] Um décimo sexto aspecto de um método de acordo com qualquer um do quarto ao décimo terceiro aspecto, em que o subconjunto B inclui um sub-subconjunto Bk, em que o sub-subconjunto Bk inclui elementos x nos quais a função de mapeamento tem o mesmo incremento ck: f(x) - f(x-1) = ck se x ∈ Bk, em que ck é um número natural. Por exemplo, ck igual a 0, 1, 2, 3, 4 .... Em outras palavras, o subconjunto B pode ser dividido em sub- subconjuntos diferentes dependendo da quantidade de exasperação de função de mapeamento em pontos x do sub- subconjunto Bk.
[0445] Um décimo sétimo aspecto de um método de acordo com o décimo sexto aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende informação para obter tamanho de pelo menos um dos sub-subconjuntos Bk (tamanho Bk) e elementos bi de pelo menos um dos sub-subconjuntos Bk.
[0446] Um décimo oitavo aspecto de um método de acordo com o décimo sexto ou décimo sétimo aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende informação para obter valor de incremento de função de mapeamento em pontos de sub- subconjunto Bk.
[0447] Um décimo nono aspecto de um método de acordo com o décimo sexto ou décimo sétimo aspecto, em que a informação para obter função de mapeamento sinalizada no fluxo de bits compreende informação para obter quantidade de sub-subconjuntos Bk.
[0448] Um vigésimo aspecto de um método de acordo com o segundo aspecto, em que a função de mapeamento é uma função por partes, e a informação para obter função de mapeamento sinalizada no fluxo de bits compreende pontos de interrupção (ou pontos de mudanças, ou pontos pivôs) da função por partes.
[0449] Um vigésimo primeiro aspecto de um método de acordo com o vigésimo aspecto, em que quantidade de pontos de interrupção (ou pontos de mudanças, ou pontos pivôs) e suas coordenadas x e y são sinalizadas no fluxo de bits de forma direta ou usando diferenças entre coordenadas de ponto atual e coordenadas de ponto anterior.
[0450] Um vigésimo segundo aspecto de um método de acordo com o vigésimo ou vigésimo primeiro aspecto, em que a função de mapeamento é uma função por partes baseada em: equação linear; equação exponencial; equação logarítmica; ou combinações das equações acima.
[0451] Um vigésimo terceiro aspecto de um método de acordo com o vigésimo segundo aspecto, em que parâmetros das funções por partes são obtidos com base em pontos pivôs; por exemplo, como um exemplo para equação linear: inclinação = (Ey - Dy)/(Ex - Dx), b = Dy + inclinação*Dx, em que D (94) e E (95) são pontos de mudanças exemplares com as coordenadas Dx, Dy e Ex, Ey correspondentemente, e inclinação e b são parâmetros de equação linear, tal como y = inclinação*x + b.
[0452] Um vigésimo quarto aspecto de um método de acordo com qualquer um do primeiro ao vigésimo terceiro aspecto, em que o decodificador compreende adicionalmente uma função de mapeamento predefinida, e o fluxo de bits compreende um indicador indicando se é para usar a função de mapeamento predefinida ou usar uma função de mapeamento sinalizada no fluxo de bits.
[0453] Um vigésimo quinto aspecto de um método de acordo qualquer um do primeiro ao vigésimo quarto aspecto, em que a informação para obter função de mapeamento é sinalizada para ambos os componentes Cb e Cr (componentes de crominância).
[0454] Um vigésimo sexto aspecto de um método de acordo com qualquer um do primeiro ao vigésimo quinto aspecto, em que a informação para obter função de mapeamento compreende um indicador indicando se função de mapeamento é sinalizada para componentes Cb e Cr separadamente ou conjuntamente.
[0455] Um vigésimo sétimo aspecto de um método de acordo com qualquer um do primeiro ao vigésimo sexto aspecto, em que a informação para obter função de mapeamento é sinalizada em: nível de sequência em conjunto de parâmetros de sequência, ou nível de imagem em conjunto de parâmetros de imagem, ou nível de grupo de peças em conjunto de parâmetros de grupo de peças, ou em conjunto de parâmetros de adaptação, ou em mensagem de informação suplementar de enriquecimento (SEI).
[0456] Um vigésimo oitavo aspecto de um método de acordo com qualquer um do primeiro ao vigésimo sétimo aspecto, em que a função de mapeamento é expressa como uma tabela tal como a seguir.
qPi < 30 30 31 32 33 34 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 29 30 31 32 33 34 35 36 37 37 38 39 40 40 = qPi − 3
[0457] Um vigésimo nono aspecto de um método de acordo com qualquer um do primeiro ao vigésimo sétimo aspecto, em que a função de mapeamento é expressa como uma tabela tal como a seguir.
qPi < 35 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 34 35 36 37 37 38 39 40 40 = qPi − 3
[0458] Um trigésimo aspecto de um decodificador (30) compreendendo conjunto de circuitos de processamento para executar o método de acordo com qualquer um do primeiro ao vigésimo nono aspecto.
[0459] Um trigésimo primeiro aspecto de um produto de programa de computador compreendendo um código de programa para realizar o método de acordo com qualquer um do primeiro ao vigésimo nono aspecto.
[0460] Um trigésimo segundo aspecto de um decodificador, compreendendo: um ou mais processadores; e um meio de armazenamento não transitório legível por computador acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para executar o método de acordo com qualquer um do primeiro ao vigésimo nono aspecto.
[0461] Além disso, a presente divulgação divulga os seguintes quarenta e um aspectos adicionais, listados do primeiro ao quadragésimo primeiro aspecto como se segue.
[0462] Um primeiro aspecto de um método de obter um parâmetro de quantização (QP) de crominância para componentes de crominância com base em um QP de luminância para componente de luminância, em que o método é realizado por um decodificador, compreendendo: analisar um fluxo de bits recebido para obter o QP de luminância e informação de uma função de mapeamento (f) que associa um índice de QP (QPi) ao QP de crominância (QPc); obter o QPi com base pelo menos em uma parte no QP de luminância; obter a função de mapeamento com base na informação obtida; e obter um QPc com base na função de mapeamento obtida e no QPi obtido.
[0463] Ter informação de mapeamento de QP de croma no fluxo de bits permite ajustar propriedades específicas de um sinal de vídeo de entrada, tal como SDR ou HDR, ou intensidade e distribuição diferentes em canais de luminância e crominância, e por esta razão pode melhorar eficiência de compressão e melhorar equilíbrio entre componentes de croma e luma em vídeo reconstruído.
[0464] Um segundo aspecto de um método do primeiro aspecto, em que a função de mapeamento associa cada elemento x de um conjunto X, em que o conjunto X corresponde a QPis em faixa de QPis permitida suportada pelo decodificador, ou de qualquer subconjunto do conjunto X, a um elemento y de um conjunto Y, em que o conjunto Y corresponde a QPcs na faixa de QPcs permitida suportada pelo decodificador.
[0465] Um terceiro aspecto de um método de acordo com o segundo aspecto, em que a função de mapeamento é uma função monotonicamente crescente (não decrescente).
[0466] Colocar esta restrição na função de mapeamento permite evitar configuração da função de mapeamento com comportamento “estranho”, por exemplo, inesperado e indesejável, quando QP de croma diminui com aumento de QP de luma; em outras palavras evitar o caso em que qualidade de croma aumenta com diminuição de qualidade de luma. Ter restrição de aumento monotônico permite que qualidade de luma e de croma sejam sincronizadas. Como vantagem adicional, esta restrição permite economizar bits em sinalização de informação de função de mapeamento ao excluir necessidade de descrever exasperação negativa da função.
[0467] Um quarto aspecto de um método de acordo com o segundo ou terceiro aspecto, em que o conjunto X inclui um subconjunto A no qual a função de mapeamento f é não crescente, por exemplo: f(x) - f(x-1) = 0 para qualquer x do subconjunto A.
[0468] Um quinto aspecto de um método de acordo com o quarto aspecto, em que o conjunto X inclui um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que A+B=X e c é um número natural não menor que 1.
[0469] Um sexto aspecto de um método de acordo com qualquer um do segundo ao quarto aspecto, em que o conjunto X inclui um subconjunto B, no qual a função de mapeamento f é crescente, isto é: f(x) - f(x-1) = c para qualquer x do subconjunto B, em que c é um número natural não menor que
1.
[0470] Um sétimo aspecto de um método de acordo com o quinto ou sexto aspecto, em que a função de mapeamento f no subconjunto B é definida tal como a seguir: f(x) - f(x- 1) = 1, para qualquer x do subconjunto B.
[0471] Um oitavo aspecto de um método de acordo qualquer um do primeiro ao sétimo aspecto, em que a informação da função de mapeamento compreende informação do tamanho do subconjunto A (sizeA) e elementos ai do subconjunto A.
[0472] Isto vantajosamente permite economizar bits ao sinalizar somente pontos (subconjunto A) onde comportamento de função difere de comportamento predefinido normal (subconjunto B).
[0473] Um nono aspecto de um método de acordo qualquer um do primeiro ao oitavo aspecto, em que a informação da função de mapeamento compreende o tamanho do subconjunto A.
[0474] Um décimo aspecto de um método de acordo com qualquer um do primeiro ao nono aspecto, em que a informação da função de mapeamento compreende valores diretos de elementos ai do subconjunto A.
[0475] Um décimo primeiro aspecto de um método de acordo com qualquer um do oitavo ao décimo aspecto, em que a informação da função de mapeamento compreende uma diferença (delta_ai) entre um valor atual do elemento ai e um valor anterior do elemento ai-1, e valores ai são obtidos tal como a seguir: ai = ai-1 + delta_ai, para qualquer i > 0.
[0476] Sinalizar diferenças em vez de valores diretos também permite economizar bits.
[0477] Um décimo segundo aspecto de um método de acordo com qualquer um do oitavo ao décimo aspecto, em que a informação da função de mapeamento compreende uma diferença (delta_a0) entre um primeiro valor a0 e um starting_point_value, em que o primeiro valor a0 do subconjunto A é obtido com base na diferença (delta_a0) tal como a seguir: a0 = starting_point_value + delta_a0 , em que starting_point_value é sinalizado no fluxo de bits ou é um valor predefinido, por exemplo, 0, 21, 30, maxQPi >> 1, em que maxQPi é o valor de QPi máximo suportado pelo decodificador, por exemplo, 63.
[0478] Um décimo terceiro aspecto de um método de acordo com qualquer um do primeiro ao décimo segundo aspecto, em que a informação da função de mapeamento é sinalizada no fluxo de bits usando qualquer um dos seguintes códigos: código binário, de comprimento fixo, unário, unário truncado, binário truncado, Golomb ou Exp- Golomb.
[0479] Um décimo quarto aspecto de um método de acordo com qualquer um do primeiro ao décimo terceiro aspecto, em que a função de mapeamento é obtida usando comportamento de função definido em subconjuntos A e B, isto é, para qualquer argumento de entrada x do subconjunto B a função aumenta, por exemplo, por 1 tal como f(x)-f(x-1) = 1, e para qualquer argumento de entrada x do subconjunto A a função é plana tal como f(x)-f(x-1) = 0; tendo uma suposição de que primeiro valor de função de mapeamento correspondendo a x=0 é 0; Por exemplo, isto pode ser implementado iterativamente usando o seguinte pseudocódigo: chroma_qp_mapping_table[θ] = θ; // inicialização for (i = 1; i <= maxQP; i++) // maxQP é QP máximo suportado por decodificador { int incStep = 1; // incremento de função para conjunto B for (j = 0; j < cQpFlatSize; j++) // cQpFlatSize é tamanho de conjunto A { if (i == cQpFlat[j]) // arranjo de cQpFlat com elementos de conjunto A {
incStep = 0; // incremento de função zero para conjunto A (plano) break; } } chroma_qp_mapping_table[i] = chroma_qp_mapping_table[i-1] + incStep; }.
[0480] Um décimo quinto aspecto de um método de acordo com qualquer um do quarto ao décimo quarto aspecto, em que a informação da função de mapeamento compreende informação de valores b do subconjunto B, e o subconjunto A é obtido como A=X-B.
[0481] Isto permite obter o comportamento de função para o conjunto total X de valores suportados de QPi com sobrecarga de sinalização minimizada ao sinalizar somente aqueles pontos onde o comportamento de função difere de comportamento predefinido.
[0482] Um décimo sexto aspecto de um método de acordo com qualquer um do quarto ao décimo quarto aspecto, em que o subconjunto B inclui um sub-subconjunto Bk, em que o sub-subconjunto Bk inclui elementos x nos quais a função de mapeamento tem o mesmo incremento ck: f(x) - f(x-1) = ck, se x ∈ Bk, em que ck é um número natural. Por exemplo, ck igual a 0, 1, 2, 3, 4... . Em outras palavras, o subconjunto B pode ser dividido em sub-subconjuntos diferentes dependendo da quantidade de exasperação de função de mapeamento em pontos x do sub-subconjunto Bk.
[0483] Isto permite aumentar flexibilidade de definição de função de mapeamento ao adicionar pontos onde a função pode ter velocidades de exasperação diferentes (ck).
[0484] Um décimo sétimo aspecto de um método de acordo com o décimo sexto aspecto, em que a informação da função de mapeamento compreende informação do tamanho de pelo menos um dos sub-subconjuntos Bk (tamanho Bk) e elementos bi de pelo menos um dos sub-subconjuntos Bk.
[0485] Um décimo oitavo aspecto de um método de acordo com o décimo sexto ou décimo sétimo aspecto, em que a informação da função de mapeamento compreende informação do valor de incremento da função de mapeamento em pontos do sub-subconjunto Bk.
[0486] Um décimo nono aspecto de um método de acordo com o décimo sexto ou décimo sétimo aspecto, em que a informação da função de mapeamento compreende informação da quantidade de sub-subconjuntos Bk.
[0487] Um vigésimo aspecto de um método de acordo com qualquer um do décimo sexto ao décimo nono aspecto, em que pelo menos uma parte da informação da função de mapeamento (por exemplo, a informação dos sub-subconjuntos Bk) é obtida usando a seguinte sintaxe. cqp_set_num_m1 ue(v) for ( k = 0; k <= cqp_set_num_m1; k++ ) { cqp_set_inc[ k ] ue(v) cqp_set_size_m1[ k ] ue(v) cqp_set_p0[k] ue(v) for ( i = 1; i <= cqp_set_size_m1[ k ]; i++ ) cqp_set_delta_m1[ k ][ i ] ue(v) }
[0488] Um vigésimo primeiro aspecto de um método de acordo com qualquer um do décimo sexto ao décimo nono aspecto, em que pelo menos uma parte da informação da função de mapeamento (por exemplo, a informação dos sub- subconjuntos Bk) é obtida usando a seguinte sintaxe. cqp_set_num_m1 ue(v) for ( k = 0; k <= cqp_set_num_m1; k++ ) { cqp_set_inc[ k ] ue(v) cqp_set_size_m1[ k ] ue(v) cqp_set_p0[k] u(7) for ( i = 1; i <= cqp_set_size_m1[ k ]; i++ ) cqp_set_delta_m1[ k ][ i ] ue(v) }
[0489] Um vigésimo segundo aspecto de um método de acordo com o segundo ou terceiro aspecto, em que a função de mapeamento é uma função por partes, e a informação da função de mapeamento compreende pontos de interrupção, ou pontos de mudanças, ou pontos pivôs da função por partes.
[0490] Este aspecto permite descrever comportamento de função com sobrecarga de sinalização limitada ao sinalizar somente pontos onde a função muda seu comportamento (por exemplo, inclinação da linha), e então descrever a função por partes entre pontos de mudanças ou pontos pivôs.
[0491] Um vigésimo segundo aspecto de um método de acordo com o segundo ou terceiro aspecto, em que quantidade de pontos de interrupção, ou pontos de mudanças, ou pontos pivôs e suas coordenadas x e y são sinalizadas no fluxo de bits de forma direta ou usando diferenças entre coordenadas de ponto atual e coordenadas de ponto anterior.
[0492] Sinalizar diferenças permite adicionalmente economizar bits em contraste com sinalização de valores diretos de coordenadas de pontos pivôs.
[0493] Um vigésimo quarto aspecto de um método de acordo com o vigésimo segundo ou vigésimo terceiro aspecto, em que a função de mapeamento é uma função por partes baseada em: equação linear; equação exponencial; equação logarítmica; ou combinações das equações acima.
[0494] Usar uma forma de equação predefinida para função por partes (por exemplo, equação linear) permite obter valores de função entre pontos pivôs sem sinalização explícita dos mesmos, o que vantajosamente reduz sobrecarga de sinalização ao descrever função de mapeamento.
[0495] Um vigésimo quinto aspecto de um método de acordo com o vigésimo quarto aspecto, em que parâmetros das funções por partes são obtidos com base em pontos pivôs; por exemplo, como um exemplo para equação linear: inclinação = (Ey - Dy)/(Ex - Dx), b = Dy + inclinação*Dx, em que D (94) e E (95) são pontos de mudanças exemplares com as coordenadas Dx, Dy e Ex, Ey correspondentemente, e inclinação e b são parâmetros de equação linear, tal como y = inclinação*x + b.
[0496] A fim de alcançar crescimento monotônico da função de mapeamento a inclinação deve ser não negativa, o que pode ser alcançado ao aplicar restrição nos deltas (Ey - Dy) e (Ex - Dx) de terem o mesmo sinal, em particular serem não negativos, por exemplo, maiores ou iguais a zero. Para alcançar isso, códigos não assinados podem ser usados para sinalizar as diferenças, por exemplo, código Exp-
Golomb de ordem zero de número inteiro não assinado. Como benefício técnico adicional, ter restrição de crescimento monasticamente permite usar código não assinado para sinalizar os deltas, o que permite economizar bits na sinalização de deltas.
[0497] Um vigésimo sexto aspecto de um método de acordo com o segundo ou terceiro aspecto, em que o conjunto X inclui um subconjunto C; a informação da função de mapeamento compreende informação de índice de início (x_start) do subconjunto C e índice de término (x_end) do subconjunto C.
[0498] Um vigésimo sétimo aspecto de um método de acordo com o vigésimo quinto ou vigésimo sexto aspecto, em que a informação da função de mapeamento compreende informação dos valores de deltas da função de mapeamento f(x) - f(x-1), para qualquer x do subconjunto C.
[0499] Um vigésimo oitavo aspecto de um método de acordo com o vigésimo sétimo aspecto, em que os valores de deltas são obtidos usando a seguinte sintaxe: sps_qpc_x_start u(7) sps_qpc_x_end u(7) for( i = sps_qpc_x_start; i <= sps_qpc_x_end; i++ ) sps_qpc_cb_delta[ i ] ue(v) em que sps_qpc_cb_delta[ i ] representa os valores de deltas.
[0500] Um vigésimo nono aspecto de um método de acordo com o vigésimo sétimo aspecto, em que os valores de deltas estão na faixa de 0 a 1.
[0501] Um trigésimo aspecto de um método de acordo com o vigésimo nono aspecto, em que os valores de deltas são obtidos usando a seguinte sintaxe: sps_qpc_x_start u(7) sps_qpc_x_end u(7) for( i = sps_qpc_x_start; i <= sps_qpc_x_end; i++ ) sps_qpc_cb_delta[ i ] ue(v) em que sps_qpc_cb_delta[ i ] representa os valores de deltas.
[0502] Um trigésimo primeiro aspecto de um método de acordo com qualquer um do vigésimo sexto ao trigésimo aspecto, em que a informação da função de mapeamento é sinalizada usando qualquer um dos seguintes códigos: código binário, de comprimento fixo, unário, unário truncado, binário truncado, Golomb ou Exp-Golomb.
[0503] Um trigésimo segundo aspecto de um método de acordo com qualquer um do primeiro ao trigésimo primeiro aspecto, em que o decodificador compreende adicionalmente uma função de mapeamento predefinida, e o fluxo de bits compreende um indicador indicando se é para usar a função de mapeamento predefinida ou usar uma função de mapeamento sinalizada no fluxo de bits.
[0504] Este aspecto permite sinalizar informação sobre função de mapeamento somente para casos quando é benéfico, isto é, quando características de canais de luma e de croma diferem significativamente de casos comuns, tal como para sinal de HDR, e usar função de mapeamento predefinida apropriada para casos comuns. Isso permite economizar sobrecarga de sinalização em muitos casos comuns.
[0505] Um trigésimo terceiro aspecto de um método de acordo com qualquer um do primeiro ao trigésimo segundo aspecto, em que a informação da função de mapeamento é sinalizada para ambos os componentes Cb e Cr (componentes de crominância).
[0506] Um trigésimo quarto aspecto de um método de acordo com qualquer um do primeiro ao trigésimo terceiro aspecto, em que a informação da função de mapeamento compreende um indicador indicando se função de mapeamento é sinalizada para componentes Cb e Cr separadamente ou conjuntamente.
[0507] Este aspecto permite aumentar adicionalmente flexibilidade ao controlar processo de quantização para os casos quando canais de croma (Cb e Cr) diferentes têm características de sinais diferentes, o que por sua vez permite aumentar adicionalmente eficiência de compressão.
[0508] Um trigésimo quinto aspecto de um método de acordo com qualquer um do primeiro ao trigésimo quarto aspecto, em que a informação da função de mapeamento é sinalizada em: nível de sequência em conjunto de parâmetros de sequência, ou nível de imagem em conjunto de parâmetros de imagem, ou nível de grupo de peças em conjunto de parâmetros de grupo de peças, ou em conjunto de parâmetros de adaptação, ou em mensagem de informação suplementar de enriquecimento (SEI).
[0509] Um trigésimo sexto aspecto de um método de acordo com qualquer um do primeiro ao trigésimo quinto aspecto, em que a função de mapeamento é expressa como uma tabela tal como a seguir.
qPi < 30 30 31 32 33 34 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 29 30 31 32 33 34 35 36 37 37 38 39 40 40 = qPi − 3
[0510] Um trigésimo sétimo aspecto de um método de acordo com qualquer um do primeiro ao trigésimo sexto aspecto, em que a função de mapeamento é expressa como uma tabela tal como a seguir. qPi < 35 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 34 35 36 37 37 38 39 40 40 = qPi − 3
[0511] Um trigésimo oitavo aspecto de um método de acordo com qualquer um do primeiro ao trigésimo sexto aspecto, em que a informação da função de mapeamento é sinalizada no fluxo de bits diretamente ou indiretamente.
[0512] Um trigésimo nono aspecto de um decodificador (30) compreendendo conjunto de circuitos de processamento para executar o método de acordo com qualquer um do primeiro ao trigésimo oitavo aspecto.
[0513] Um quadragésimo aspecto de um produto de programa de computador compreendendo um código de programa para realizar o método de acordo com qualquer um do primeiro ao trigésimo oitavo aspecto.
[0514] Um quadragésimo primeiro aspecto de um decodificador, compreendendo: um ou mais processadores; e um meio de armazenamento não transitório legível por computador acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para executar o método de acordo com qualquer um do primeiro ao trigésimo oitavo aspecto.

Claims (28)

REIVINDICAÇÕES EMENDADAS
1. Método de obter um parâmetro de quantização (QP) de crominância para componentes de crominância com base em um QP de luminância para um componente de luminância, o método caracterizado pelo fato de que é realizado por um decodificador e que compreende: receber (1601) um fluxo de bits; analisar (1603) o fluxo de bits para obter o QP de luminância e informação em uma tabela de mapeamento de QP de croma que associa um índice de QP (QPi) ao QP de crominância (QPc); obter (1605) o QPi com base pelo menos em uma parte no QP de luminância; obter (1607) a tabela de mapeamento de QP de croma com base na informação obtida; obter (1609) um QPc com base na tabela de mapeamento de QP de croma obtida e no QPi obtido; e obter (1611) parâmetro de quantização de crominância com base no QPc obtido.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que qPCb, qPCr e qPCbCr são derivados tal como a seguir: qPChroma = Clip3( −QpBdOffset, 63, QpY ); qPCb = ChromaQpTable[ 0 ][ qPChroma ]; qPCr = ChromaQpTable[ 1 ][ qPChroma ]; qPCbCr = ChromaQpTable[ 2 ][ qPChroma ]; em que os parâmetros de quantização de croma para os componentes Cb e Cr, Qp’Cb e Qp’Cr, e codificação de Cb-Cr de junção Qp’CbCr são derivados tal como a seguir: Qp’Cb = Clip3( −QpBdOffset, 63, qPCb + pps_cb_qp_offset
+ slice_cb_qp_offset + CuQpOffsetCb ) + QpBdOffset; Qp’Cr = Clip3( −QpBdOffset, 63, qPCr + pps_cr_qp_offset + slice_cr_qp_offset + CuQpOffsetCr ) + QpBdOffset; Qp’CbCr = Clip3( −QpBdOffset, 63, qPCbCr + pps_joint_cbcr _qp_offset_value + slice_joint_cbcr_qp_offset + CuQpOffsetCbCr ) + QpBdOffset; onde ChromaQpTable é a tabela de mapeamento de QP de croma; onde QPi corresponde a qPChroma; onde QPc corresponde a qPCb, qPCr e qPCbCr; onde QpBdOffset é o deslocamento de profundidade de bits calculado com base na profundidade de bits das amostras dos arranjos de luma e croma usando a fórmula: QpBdOffset = 6 * bit_depth_minus8, onde bit_depth_minus8 deve estar na faixa de 0 a 8, inclusivo; onde pps_cb_qp_offset e pps_cr_qp_offset especificam os deslocamentos para o parâmetro de quantização de luma Qp’Y usado para derivar Qp’Cb e Qp’Cr, respectivamente; onde pps_joint_cbcr_qp_offset_value especifica o deslocamento para o parâmetro de quantização de luma Qp’Y usado para derivar Qp’CbCr ; onde slice_cr_qp_offset especifica uma diferença para ser adicionada ao valor de pps_cr_qp_offset ao determinar o valor do parâmetro de quantização Qp’Cr; onde slice_cb_qp_offset especifica uma diferença para ser adicionada ao valor de pps_cb_qp_offset ao determinar o valor do parâmetro de quantização Qp’Cb; onde slice_joint_cbcr_qp_offset especifica uma diferença para ser adicionada ao valor de pps_joint_cbcr_qp_offset_value ao determinar o valor do Qp’CbCr; onde as variáveis CuQpOffsetCb, CuQpOffsetCr e CuQpOffsetCbCr especificam valores para serem usados ao determinar os respectivos valores dos parâmetros de quantização Qp’Cb, Qp’Cr e Qp’CbCr para o decodificador.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que a tabela de mapeamento de QP de croma associa cada elemento x de um conjunto X, em que o conjunto X corresponde a QPis em uma faixa de QPis permitida suportada pelo decodificador, ou de qualquer subconjunto do conjunto X, a um elemento y de um conjunto Y, em que o conjunto Y corresponde a QPcs em uma faixa de QPcs permitida suportada pelo decodificador.
4. Método, de acordo com a reivindicação 2 ou 3, caracterizado pelo fato de que os valores da tabela de mapeamento de QP de croma satisfazem uma função de mapeamento f.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que a função de mapeamento é uma função monotonicamente crescente.
6. Método, de acordo com a reivindicação 4 ou 5, caracterizado pelo fato de que o conjunto X inclui um subconjunto A no qual a função de mapeamento f é não crescente, isto é: f(x) - f(x-1) = 0 para qualquer x do subconjunto A.
7. Método, de acordo com qualquer uma das reivindicações 4 a 6, caracterizado pelo fato de que o conjunto X inclui um subconjunto B, no qual a função de mapeamento f é crescente, isto é:
f(x) - f(x-1) = c para qualquer x do subconjunto B, em que c é um número natural não menor que 1.
8. Método, de acordo com a reivindicação 6 ou 7, caracterizado pelo fato de que a informação da função de mapeamento compreende pelo menos um dos seguintes: informação do tamanho do subconjunto A (sizeA) e elementos ai do subconjunto A; o tamanho do subconjunto A; e valores diretos de elementos ai do subconjunto A.
9. Método, de acordo com qualquer uma das reivindicações 6 a 8, caracterizado pelo fato de que a informação da função de mapeamento compreende uma diferença (delta_ai) entre um valor atual do elemento ai e um valor anterior do elemento ai-1, e valores ai são obtidos tal como a seguir: ai = ai-1 + delta_ai, para qualquer i > 0.
10. Método, de acordo com qualquer uma das reivindicações 6 a 9, caracterizado pelo fato de que a informação da função de mapeamento compreende uma diferença (delta_a0) entre um primeiro valor a0 e um valor de ponto de início denotado por starting_point_value, em que o primeiro valor a0 do subconjunto A é obtido com base na diferença (delta_a0) tal como a seguir: a0 = starting_point_value + delta_ao, em que o valor de ponto de início starting_point_value é sinalizado no fluxo de bits ou é um valor predefinido.
11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que o valor de ponto de início starting_point_value é um de 0, 21, 30, maxQPi >> 1, em que maxQPi é o valor de QPi máximo suportado pelo decodificador.
12. Método, de acordo com qualquer uma das reivindicações 4 a 11, caracterizado pelo fato de que a informação da função de mapeamento é sinalizada no fluxo de bits usando qualquer um dos seguintes códigos: código binário, de comprimento fixo, unário, unário truncado, binário truncado, Golomb ou Exp-Golomb.
13. Método, de acordo com qualquer uma das reivindicações 4 a 12, caracterizado pelo fato de que a função de mapeamento é obtida usando um comportamento funcional definido nos subconjuntos A e B, isto é, para qualquer argumento de entrada x do subconjunto B, a função de mapeamento aumenta por um valor inteiro igual ou maior que um, e para qualquer argumento de entrada x do subconjunto A, a função de mapeamento é plana tal como f(x)-f(x-1) = 0; onde é assumido que o primeiro valor de função de mapeamento correspondendo a x=0 é 0.
14. Método, de acordo com a reivindicação 13, caracterizado pelo fato de que o comportamento funcional é implementado iterativamente usando o seguinte pseudocódigo: chroma_qp_mapping_table[θ] = θ; // inicialização for (i = 1; i <= maxQP; i++) // maxQP é QP máximo suportado por decodificador { int incStep = 1; // incremento de função para conjunto B for (j = 0; j < cQpFlatSize; j++) // cQpFlatSize é tamanho de conjunto A {
if (i == cQpFlat[j]) // arranjo de cQpFlat com elementos de conjunto A { incStep = 0; // incremento de função zero para conjunto A (plano) break; } } chroma_qp_mapping_table[i] = chroma_qp_mapping_table[i-1] + incStep; }.
15. Método, de acordo com qualquer uma das reivindicações 4 a 14, caracterizado pelo fato de que a informação da função de mapeamento compreende informação de valores b do subconjunto B, e o subconjunto A é obtido como A=X-B.
16. Método, de acordo com qualquer uma das reivindicações 4 a 15, caracterizado pelo fato de que o subconjunto B inclui um ou mais sub-subconjuntos Bk, em que os sub-subconjuntos Bk incluem elementos x nos quais a função de mapeamento tem o mesmo incremento ck: f(x) - f(x-1) = ck, se x ∈ Bk, em que ck é um número natural.
17. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que a informação da função de mapeamento compreende pelo menos um dos seguintes: informação do tamanho de pelo menos um dos sub- subconjuntos Bk (tamanho Bk) e elementos bi de pelo menos um dos sub-subconjuntos Bk; o valor de incremento da função de mapeamento em pontos de sub-subconjunto Bk. e informação da quantidade de sub-subconjuntos Bk.
18. Método, de acordo com a reivindicação 16 ou 17, caracterizado pelo fato de que pelo menos uma parte da informação da função de mapeamento, representando a informação dos sub-subconjuntos Bk, é obtida usando a seguinte sintaxe: cqp_set_num_m1 ue(v) for ( k = 0; k <= cqp_set_num_m1; k++ ) { cqp_set_inc[ k ] ue(v) cqp_set_size_m1[ k ] ue(v) ue(v) ou cqp_set_p0[k] u(7) for ( i = 1; i <= cqp_set_size_m1[ k ]; i++ ) cqp_set_delta_m1[ k ][ i ] ue(v) }
19. Método, de acordo com qualquer uma das reivindicações 1 a 18, caracterizado pelo fato de que o decodificador compreende adicionalmente uma tabela de mapeamento de QP de croma predefinida, e o fluxo de bits compreende um indicador indicando se é para usar a uma tabela de mapeamento de QP de croma predefinida ou usar uma tabela de mapeamento de QP de croma sinalizada no fluxo de bits.
20. Método, de acordo com qualquer uma das reivindicações 1 a 19, caracterizado pelo fato de que a informação da tabela de mapeamento de QP de croma é sinalizada conjuntamente para todos os componentes de crominância.
21. Método, de acordo com qualquer uma das reivindicações 1 a 20, caracterizado pelo fato de que a informação da tabela de mapeamento de QP de croma compreende um indicador indicando se a tabela de mapeamento de QP de croma é sinalizada para componentes Cb e Cr separadamente ou conjuntamente.
22. Método, de acordo com qualquer uma das reivindicações 1 a 21, caracterizado pelo fato de que a informação da tabela de mapeamento de QP de croma é sinalizada em: nível de sequência em um conjunto de parâmetros de sequência, ou nível de imagem em um conjunto de parâmetros de imagem, ou nível de grupo de peças em um conjunto de parâmetros de grupo de peças, ou em um conjunto de parâmetros de adaptação, ou em uma mensagem de informação suplementar de enriquecimento (SEI).
23. Método, de acordo com qualquer uma das reivindicações 1 a 22, caracterizado pelo fato de que a tabela de mapeamento de QP de croma predefinida é expressa como uma das seguintes: qPi < 30 30 31 32 33 34 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 29 30 31 32 33 34 35 36 37 37 38 39 40 40 = qPi − 3 e qPi < 35 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 34 35 36 37 37 38 39 40 40 = qPi − 3
24. Método, de acordo com qualquer uma das reivindicações 1 a 23, caracterizado pelo fato de que a informação da tabela de mapeamento de QP de croma é sinalizada no fluxo de bits diretamente ou indiretamente.
25. Decodificador (30), caracterizado pelo fato de que compreende conjunto de circuitos de processamento para executar o método conforme definido em qualquer uma das reivindicações 1 a 24.
26. Produto de programa de computador, caracterizado pelo fato de que compreende um código de programa para realizar o método conforme definido em qualquer uma das reivindicações 1 a 24.
27. Decodificador, caracterizado pelo fato de que compreende: um ou mais processadores; e um meio de armazenamento não transitório legível por computador acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para executar o método conforme definido em qualquer uma das reivindicações 1 a 24.
28. Decodificador para obter um parâmetro de quantização (QP) de crominância para componentes de crominância com base em um QP de luminância para um componente de luminância, caracterizado pelo fato de que compreende unidades configuradas para executar as etapas do método conforme definido em qualquer uma das reivindicações 1 a 24.
BR112021000379-7A 2019-04-26 2020-04-26 Método e aparelho para sinalização de função de mapeamento de parâmetro de quantização de croma BR112021000379A2 (pt)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201962839607P 2019-04-26 2019-04-26
US62/839,607 2019-04-26
RUPCT/RU2019/000444 2019-06-21
RU2019000444 2019-06-21
US201962871197P 2019-07-07 2019-07-07
US62/871,197 2019-07-07
US201962872238P 2019-07-09 2019-07-09
US62/872,238 2019-07-09
PCT/CN2020/086924 WO2020216375A1 (en) 2019-04-26 2020-04-26 Method and apparatus for signaling of mapping function of chroma quantization parameter

Publications (1)

Publication Number Publication Date
BR112021000379A2 true BR112021000379A2 (pt) 2021-04-13

Family

ID=72941360

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112021021434A BR112021021434A2 (pt) 2019-04-26 2020-04-26 Método e aparelho para sinalização de função de mapeamento de parâmetro de quantização de croma
BR112021000379-7A BR112021000379A2 (pt) 2019-04-26 2020-04-26 Método e aparelho para sinalização de função de mapeamento de parâmetro de quantização de croma

Family Applications Before (1)

Application Number Title Priority Date Filing Date
BR112021021434A BR112021021434A2 (pt) 2019-04-26 2020-04-26 Método e aparelho para sinalização de função de mapeamento de parâmetro de quantização de croma

Country Status (12)

Country Link
US (2) US20220070460A1 (pt)
EP (3) EP3939283A4 (pt)
JP (2) JP7368496B2 (pt)
KR (1) KR20210147063A (pt)
CN (4) CN113767629A (pt)
AU (1) AU2020260657A1 (pt)
BR (2) BR112021021434A2 (pt)
CA (1) CA3137206A1 (pt)
CL (1) CL2021002776A1 (pt)
MX (1) MX2021012861A (pt)
SG (1) SG11202111156PA (pt)
WO (2) WO2020216375A1 (pt)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114745544B (zh) 2019-05-28 2024-05-28 杜比实验室特许公司 用信号发送量化参数的方法和计算机可读记录介质
AU2020290306B2 (en) 2019-06-11 2023-11-23 Lg Electronics Inc. Image decoding method and device therefor
CN113382251B (zh) * 2019-06-21 2022-04-08 杭州海康威视数字技术股份有限公司 一种编解码方法、装置、设备及存储介质
CN114041287A (zh) 2019-06-21 2022-02-11 北京字节跳动网络技术有限公司 自适应环内颜色空间转换和其他视频编解码工具的选择性使用
KR102640264B1 (ko) * 2019-06-28 2024-02-23 엘지전자 주식회사 크로마 양자화 파라미터 데이터에 대한 영상 디코딩 방법 및 그 장치
CN114342394A (zh) 2019-07-05 2022-04-12 Lg 电子株式会社 用于色度分量的图像解码方法及其装置
CN114128275A (zh) * 2019-07-12 2022-03-01 交互数字Vc控股法国有限公司 亮度到色度量化参数表信令
US20220408093A1 (en) * 2019-11-05 2022-12-22 Lg Electronics Inc. Video decoding method and device for coding chroma quantization parameter offset-related information
WO2021088951A1 (en) * 2019-11-07 2021-05-14 Beijing Bytedance Network Technology Co., Ltd. Quantization properties of adaptive in-loop color-space transform for video coding
US11803989B2 (en) * 2020-01-08 2023-10-31 Qualcomm Incorporated Quantization for geometry-based point cloud compression

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100213018B1 (ko) * 1994-07-30 1999-08-02 윤종용 동화상 부호화장치
US7269219B1 (en) * 1997-02-14 2007-09-11 At&T Corp. Non-linear quantizer for video coding
US6347116B1 (en) * 1997-02-14 2002-02-12 At&T Corp. Non-linear quantizer for video coding
US6639942B1 (en) * 1999-10-21 2003-10-28 Toshiba America Electronic Components, Inc. Method and apparatus for estimating and controlling the number of bits
US7295609B2 (en) * 2001-11-30 2007-11-13 Sony Corporation Method and apparatus for coding image information, method and apparatus for decoding image information, method and apparatus for coding and decoding image information, and system of coding and transmitting image information
EP2373033A3 (en) * 2004-01-30 2011-11-30 Panasonic Corporation Picture coding and decoding method, apparatus, and program thereof
KR100763178B1 (ko) * 2005-03-04 2007-10-04 삼성전자주식회사 색 공간 스케일러블 비디오 코딩 및 디코딩 방법, 이를위한 장치
JP2009500941A (ja) * 2005-07-08 2009-01-08 エルジー エレクトロニクス インコーポレイティド 情報を圧縮/圧縮解除するためにビデオ信号のコーディング情報をモデリングする方法
EP1911290A4 (en) * 2005-07-08 2010-04-28 Lg Electronics Inc METHOD FOR MODELING A VIDEO SIGNAL CODE INFORMATION FOR COMPRESSING / DECOMPRIMING CODING INFORMATION
US20070147497A1 (en) * 2005-07-21 2007-06-28 Nokia Corporation System and method for progressive quantization for scalable image and video coding
US7894523B2 (en) * 2005-09-05 2011-02-22 Lg Electronics Inc. Method for modeling coding information of a video signal for compressing/decompressing coding information
US7889790B2 (en) * 2005-12-20 2011-02-15 Sharp Laboratories Of America, Inc. Method and apparatus for dynamically adjusting quantization offset values
US8711925B2 (en) * 2006-05-05 2014-04-29 Microsoft Corporation Flexible quantization
EP2128822B1 (en) * 2008-05-27 2012-01-04 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Index-based pixel block processing
US20110135198A1 (en) * 2009-12-08 2011-06-09 Xerox Corporation Chrominance encoding and decoding of a digital image
US8588536B2 (en) * 2010-02-22 2013-11-19 Texas Instruments Incorporated Guaranteed-rate tiled image data compression
JP5393573B2 (ja) * 2010-04-08 2014-01-22 株式会社Nttドコモ 動画像予測符号化装置、動画像予測復号装置、動画像予測符号化方法、動画像予測復号方法、動画像予測符号化プログラム、及び動画像予測復号プログラム
KR101566366B1 (ko) * 2011-03-03 2015-11-16 한국전자통신연구원 색차 성분 양자화 매개 변수 결정 방법 및 이러한 방법을 사용하는 장치
KR20130068823A (ko) * 2011-12-16 2013-06-26 삼성전자주식회사 영상 신호 처리를 위한 방법 및 장치
JP5988577B2 (ja) * 2011-12-28 2016-09-07 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム
KR20140110938A (ko) * 2012-01-20 2014-09-17 소니 주식회사 유효성 맵 코딩의 복잡성 감소
GB2501535A (en) * 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US9219916B2 (en) * 2012-06-12 2015-12-22 Dolby Laboratories Licensing Corporation Joint base layer and enhancement layer quantizer adaptation in EDR video coding
US9414054B2 (en) * 2012-07-02 2016-08-09 Microsoft Technology Licensing, Llc Control and use of chroma quantization parameter values
US9591302B2 (en) * 2012-07-02 2017-03-07 Microsoft Technology Licensing, Llc Use of chroma quantization parameter offsets in deblocking
GB2506852B (en) * 2012-09-28 2015-09-30 Canon Kk Method and device for determining the value of a quantization parameter
GB2512826B (en) 2013-04-05 2017-05-10 Canon Kk Method and device for determining the value of a quantization parameter
JP6226578B2 (ja) * 2013-06-13 2017-11-08 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム
EP4366308A2 (en) * 2013-06-28 2024-05-08 Velos Media International Limited Methods and devices for emulating low-fidelity coding in a high-fidelity coder
WO2015008464A1 (en) * 2013-07-14 2015-01-22 Sharp Kabushiki Kaisha Video parameter set signaling
US9294766B2 (en) * 2013-09-09 2016-03-22 Apple Inc. Chroma quantization in video coding
US10362333B2 (en) * 2014-01-02 2019-07-23 Qualcomm Incorporated Color index coding for palette-based video coding
US20150195554A1 (en) * 2014-01-03 2015-07-09 Sharp Laboratories Of America, Inc. Constraints and enhancements for a scalable video coding system
EP3111645A1 (en) * 2014-02-26 2017-01-04 Dolby Laboratories Licensing Corporation Luminance based coding tools for video compression
US10136141B2 (en) * 2014-06-11 2018-11-20 Qualcomm Incorporated Determining quantization parameter (QP) values and delta QP values for palette coded blocks in video coding
US9924175B2 (en) * 2014-06-11 2018-03-20 Qualcomm Incorporated Determining application of deblocking filtering to palette coded blocks in video coding
US20150373343A1 (en) * 2014-06-20 2015-12-24 Qualcomm Incorporated Representation format update in multi-layer codecs
US20150373327A1 (en) * 2014-06-20 2015-12-24 Qualcomm Incorporated Block adaptive color-space conversion coding
EP3026908A1 (en) * 2014-11-26 2016-06-01 Thomson Licensing Method and device for quantizing and de-quantizing a picture using scaling factors for chrominance based on luminance
EP3304912A4 (en) * 2015-06-07 2018-06-06 Sharp Kabushiki Kaisha Systems and methods for optimizing video coding based on a luminance transfer function or video color component values
CN108141598B (zh) * 2015-09-02 2022-10-04 交互数字Vc控股公司 用于视频编码和解码中的量化的方法和装置
US10165275B2 (en) * 2016-01-26 2018-12-25 Dolby Laboratories Licensing Corporation Content-adaptive reshaping for high dynamic range images
GB2552223B (en) * 2016-07-15 2020-01-01 Gurulogic Microsystems Oy Encoders, decoders and methods employing quantization
US10834400B1 (en) * 2016-08-19 2020-11-10 Fastvdo Llc Enhancements of the AV1 video codec
US10477212B2 (en) * 2016-10-11 2019-11-12 Dolby Laboratories Licensing Corporation Adaptive chroma quantization in video coding for multiple color imaging formats
US11019339B2 (en) * 2017-07-12 2021-05-25 Futurewei Technologies, Inc. Fractional quantization parameter offset in video compression
US20200162735A1 (en) * 2017-07-28 2020-05-21 Sony Semiconductor Solutions Corporation Image processing apparatus and method
CN111373751B (zh) * 2017-08-10 2023-02-28 夏普株式会社 图像滤波装置、图像解码装置以及图像编码装置
CN111742554B (zh) * 2018-02-01 2021-08-06 联发科技股份有限公司 具有视频数据自适应量化的视频编码或解码方法和装置
US11889070B2 (en) * 2018-03-23 2024-01-30 Sharp Kabushiki Kaisha Image filtering apparatus, image decoding apparatus, and image coding apparatus
ES2902481T3 (es) * 2018-04-01 2022-03-28 Lg Electronics Inc Un método de codificación de imágenes basado en una derivación de parámetro de cuantificación
KR102030384B1 (ko) * 2018-06-19 2019-11-08 광운대학교 산학협력단 잔차 계수 부호화/복호화 방법 및 장치

Also Published As

Publication number Publication date
EP3939283A1 (en) 2022-01-19
WO2020216376A1 (en) 2020-10-29
CA3137206A1 (en) 2020-10-29
KR20210147063A (ko) 2021-12-06
JP2023179671A (ja) 2023-12-19
CN117714687A (zh) 2024-03-15
EP3939283A4 (en) 2022-05-18
AU2020260657A1 (en) 2021-11-11
EP4346205A2 (en) 2024-04-03
EP4346205A3 (en) 2024-04-24
BR112021021434A2 (pt) 2021-12-21
CN116760984A (zh) 2023-09-15
CN113785577A (zh) 2021-12-10
CN113767629A (zh) 2021-12-07
US20220070462A1 (en) 2022-03-03
JP2022530480A (ja) 2022-06-29
JP7368496B2 (ja) 2023-10-24
CL2021002776A1 (es) 2022-05-20
EP3949402A4 (en) 2022-06-08
US20220070460A1 (en) 2022-03-03
SG11202111156PA (en) 2021-11-29
CN113785577B (zh) 2023-06-27
MX2021012861A (es) 2021-12-10
WO2020216375A1 (en) 2020-10-29
EP3949402A1 (en) 2022-02-09

Similar Documents

Publication Publication Date Title
BR112021000379A2 (pt) Método e aparelho para sinalização de função de mapeamento de parâmetro de quantização de croma
BR112021016677A2 (pt) Método e aparelho para predição inter baseada em afim de sub-blocos de croma
CA3114341C (en) An encoder, a decoder and corresponding methods using compact mv storage
WO2020149770A1 (en) Method and apparatus of local illumination compensation for predictive coding
US11758137B2 (en) Encoder, decoder and corresponding methods using DCT2 enabled high level flag
AU2019368125B2 (en) Separate merge list for subblock merge candidates and intra-inter techniques harmonization for video coding
BR112020026183A2 (pt) Método de codificação de vídeo, codificador, decodificador e produto de programa de computador
US11863748B2 (en) Encoder, a decoder and corresponding methods of chroma qantization control
WO2020164604A1 (en) An encoder, a decoder and corresponding methods restricting size of sub-partitions from intra sub-partition coding mode tool