BR112020020594A2 - Harmonização de quantização baseada em transformadas e derivação de escala de ajuste de faixa dinâmica em codificação de vídeo - Google Patents

Harmonização de quantização baseada em transformadas e derivação de escala de ajuste de faixa dinâmica em codificação de vídeo Download PDF

Info

Publication number
BR112020020594A2
BR112020020594A2 BR112020020594-0A BR112020020594A BR112020020594A2 BR 112020020594 A2 BR112020020594 A2 BR 112020020594A2 BR 112020020594 A BR112020020594 A BR 112020020594A BR 112020020594 A2 BR112020020594 A2 BR 112020020594A2
Authority
BR
Brazil
Prior art keywords
value
chroma
image
video
video data
Prior art date
Application number
BR112020020594-0A
Other languages
English (en)
Inventor
Adarsh Krishnan Ramasubramonian
Dmytro Rusanovskyy
Marta Karczewicz
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112020020594A2 publication Critical patent/BR112020020594A2/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • G06T5/92Dynamic range modification of images or parts thereof based on global image properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • 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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20172Image enhancement details
    • G06T2207/20208High dynamic range [HDR] image processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

a presente invenção refere-se a técnicas para decodificar dados de vídeo que incluem determinar um valor de parâmetro de quantização (qp) de imagem da imagem de dados de vídeo, determinar um valor de deslocamento de qp de croma intermediário para um valor de qp de croma com base no valor de qp de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo, determinar o valor de qp de croma com uma segunda função do valor de deslocamento de qp de croma intermediário, e decodificar a imagem de dados de vídeo usando o valor de qp de croma.

Description

“HARMONIZAÇÃO DE QUANTIZAÇÃO BASEADA EM TRANSFORMADAS E DERIVAÇÃO DE ESCALA DE AJUSTE DE FAIXA DINÂMICA EM CODIFICAÇÃO DE VÍDEO”
[0001] Este pedido reivindica prioridade para o Pedido de Patente dos EUA Nº. 16/380,520, depositado em 10 de abril de 2019, que reivindica o benefício do Pedido de Patente Provisório dos EUA Nº. 62/656,936, depositado em 12 de abril de 2018, com todo o conteúdo de cada um sendo aqui incorporado por referência.
CAMPO TÉCNICO
[0002] Esta divulgação refere-se a codificação de vídeo e decodificação de vídeo.
FUNDAMENTO
[0003] Recursos de vídeo digital podem ser incorporados em uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de radiodifusão digital direta, sistemas de radiodifusão sem fio, assistentes digitais pessoais (PDAs), laptops ou computadores de mesa, tablets, leitores de livro eletrônico, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de videogame, consoles de videogame, telefones celulares ou de rádio via satélite, os chamados “telefones inteligentes”, dispositivos de teleconferência de vídeo, dispositivos de fluxo contínuo de vídeo e semelhantes. Dispositivos de vídeo digital implementam técnicas de codificação de vídeo, tais como as descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU- T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão Codificação de Vídeo de Alta Eficiência (HEVC), ITU-T H.265/High Efficiency Video Coding (HEVC), e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de forma mais eficiente, implementando tais técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intra-imagem) e/ou predição temporal (interimagem) para reduzir ou remover a redundância inerente em sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, uma imagem de vídeo ou uma porção de uma imagem de vídeo) pode ser particionada em blocos de vídeo, que também podem ser referidos como unidades de árvore de codificação (CTUs), unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando predição espacial em relação a amostras de referência em blocos adjacentes na mesma imagem. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar predição espacial com relação a amostras de referência em blocos adjacentes na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e as imagens de referência podem ser referidas como quadros de referência.
SUMÁRIO
[0005] Esta divulgação está relacionada ao campo de codificação de sinais de vídeo com representações de Alta Faixa Dinâmica (HDR) e Ampla Gama de cores (WCG). Mais especificamente, a atual divulgação descreve sinalização e operações aplicadas a dados de vídeo em determinados espaços de cores para permitir uma compactação mais eficiente de dados de vídeo em HDR e WCG.
[0006] Em particular, a divulgação descreve métodos e dispositivos definidos para determinar parâmetros de quantização de croma para imagens de dados de vídeo com base em características dos dados de vídeo (por exemplo, gama de cores) e um parâmetro de quantização de luma. As técnicas desta divulgação podem ser usadas em conjunto com técnicas de ajuste de faixa dinâmica para alcançar maior eficiência de codificação de vídeo com menos artefatos visuais ao codificar conteúdo em HDR e/ou WCG.
[0007] Em um exemplo, esta divulgação descreve um método de decodificar uma imagem de dados de vídeo, o método compreendendo determinar um valor de parâmetro de quantização (QP) de imagem da imagem de dados de vídeo, determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma usando o valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo, determinar o valor de QP de croma com uma segunda função do valor de deslocamento de QP de croma intermediário, e decodificar a imagem de dados de vídeo usando o valor de QP de croma para produzir uma imagem decodificada.
[0008] Em outro exemplo, esta divulgação descreve um aparelho configurado para decodificar dados de vídeo, o aparelho compreendendo uma memória configurada para armazenar uma imagem de dados de vídeo, e um ou mais processadores em comunicação com a memória, os um ou mais processadores configurados para determinar um valor de QP de imagem da imagem de dados de vídeo, determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma usando o valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo, determinar o valor de QP de croma com uma segunda função do valor de deslocamento de QP de croma intermediário, e decodificar a imagem de dados de vídeo usando o valor de QP de croma para produzir uma imagem decodificada.
[0009] Em um exemplo, esta divulgação descreve um aparelho configurado para decodificar dados de vídeo, o aparelho compreendendo meios para determinar um valor de QP de imagem da imagem de dados de vídeo, meios para determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma usando o valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo, meios para determinar o valor de QP de croma com uma segunda função do valor de deslocamento de QP de croma intermediário, e meios para decodificar a imagem de dados de vídeo usando o valor de QP de croma para produzir uma imagem decodificada.
[0010] Em um exemplo, esta divulgação descreve um meio de armazenamento legível por computador armazenando instruções que, quando executadas, levam um ou mais processadores de um dispositivo configurado para decodificar dados de vídeo a determinar um valor de QP de imagem da imagem de dados de vídeo, determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma usando o valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo, determinar o valor de QP de croma com uma segunda função do valor de deslocamento de QP de croma intermediário, e decodificar a imagem de dados de vídeo usando o valor de QP de croma para produzir uma imagem decodificada.
[0011] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo. Outras recursos, objetos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0012] A Figura 1 é um diagrama de blocos ilustrando um sistema de codificação e decodificação de de vídeo exemplificativo que pode realizar as técnicas desta divulgação.
[0013] As Figuras 2A e 2B são diagramas conceituais ilustrando uma estrutura de árvore binária quadtree (QTBT) exemplificativa, e uma unidade de árvore de codificação (CTU) correspondente.
[0014] A Figura 3 é um diagrama de blocos ilustrando um codificador de vídeo exemplificativo que pode realizar as técnicas desta divulgação.
[0015] A Figura 4 é um diagrama de blocos ilustrando um decodificador de vídeo exemplificativo que pode realizar as técnicas desta divulgação.
[0016] A Figura 5 é um desenho conceitual ilustrando os conceitos de dados de alta faixa dinâmica (HDR).
[0017] A Figura 6 é um diagrama conceitual ilustrando gamas de cores exemplificativas.
[0018] A Figura 7 é um fluxograma ilustrando um exemplo de conversão de representação HDR/ampla gama de cores (WCG).
[0019] A Figura 8 é um fluxograma ilustrando um exemplo de conversão inversa de HDR/WCG.
[0020] A Figura 9 é diagrama conceitual ilustrando exemplo de funções de transferência eletro- ópticas (EOTF) utilizadas para conversão de dados de vídeo (incluindo faixa dinâmica padrão (SDR) e HDR) de níveis de código perceptualmente uniformes em luminância linear.
[0021] A Figura 10 é um gráfico ilustrando uma função de transferência PQ.
[0022] A Figura 11 é um gráfico ilustrando uma função de escala de croma orientada por luma (LCS).
[0023] A Figura 12 é uma tabela exemplificativa para uso com as técnicas desta divulgação.
[0024] A Figura 13 é outra tabela exemplificativa para uso com as técnicas desta divulgação.
[0025] A Figura 14 é um fluxograma ilustrando um método de codificação exemplificativo de acordo com as técnicas desta divulgação.
[0026] A Figura 15 é um fluxograma ilustrando um método de decodificação exemplificativo de acordo com as técnicas desta divulgação.
DESCRIÇÃO DETALHADA
[0027] Em comparação com o conteúdo de faixa dinâmica padrão (SDR), observou-se que os artefatos de croma são mais visíveis em conteúdo de alta faixa dinâmica (HDR) ao codificar com técnicas que são semelhantes à codificação SDR. Por exemplo, mais artefatos de croma podem ser visíveis em regiões claras da imagem. Sinalizar um deslocamento de parâmetro de quantização de croma (QP), que é uma função do parâmetro QP de base para os componentes de luma, é uma maneira de reduzir o impacto de artefatos de croma que podem ser produzidos por essas técnicas.
[0028] [0028] Outra técnica para reduzir artefatos de croma é escalar as amostras de croma (por exemplo, usando um processo de ajuste de faixa dinâmica (DRA)) para refletir o termo de deslocamento de QP de croma (por exemplo, valor de deslocamento de croma), potencialmente melhorando a codificação geral das amostras de croma. No entanto, a cascata QP (codificação de diferentes imagens do vídeo com diferentes QPs) afeta o deslocamento de QP de croma sinalizado para as imagens. Usar um único valor de deslocamento de QP de croma para todas as imagens em uma sequência resulta em menos deslocamentos QP de croma combinados sendo aplicados a diferentes imagens nas sequências, afetando assim a experiência de visualização. A sinalização de valores de deslocamento de QP de croma para uma imagem resultaria em bits adicionais a serem sinalizados, afetando assim o desempenho da codificação. Se escala DRA de croma for aplicada a cada imagem com base no QP associado com a imagem, então os parâmetros de DRA de croma são sinalizados para cada imagem, o que também resulta em mais bits.
[0029] Esta divulgação descreve várias técnicas que podem melhorar o ajuste de faixa dinâmica sobre várias imagens e a integração de ajuste de faixa dinâmica com codecs de vídeo híbridos baseados em transformada (por exemplo, H.264/AVC, H.265/HEVC), incluindo sinalização. Um codec de vídeo híbrido baseado em transformada é um codec de vídeo que usa inter- e intrapredição junto com codificação de transformada. As técnicas desta divulgação podem reduzir a presença e visibilidade de artefatos de croma em dados de vídeo decodificados, ao mesmo tempo em que mantêm eficiência de codificação aceitável em termos de taxa de bits.
[0030] A Figura 1 é um diagrama de blocos ilustrando um sistema de codificação e decodificação de vídeo exemplificativo 100 que pode realizar as técnicas desta divulgação. As técnicas desta divulgação geralmente referem-se à codificação (codificar e/ou decodificar) de dados de vídeo. Em geral, dados de vídeo incluem quaisquer dados para processamento de um vídeo. Assim, dados de vídeo podem incluir vídeo bruto, não codificado, vídeo codificado, vídeo decodificado (por exemplo, reconstruído) e metadados de vídeo, tais como dados de sinalização.
[0031] Conforme mostrado na Figura 1, o sistema 100 inclui um dispositivo de origem 102 que fornece dados de vídeo codificados a serem decodificados e exibidos por um dispositivo de destino 116, neste exemplo. Em particular, o dispositivo de origem 102 fornece os dados de vídeo ao dispositivo de destino 116 por meio de um meio legível por computador 110. O dispositivo de origem 102 e o dispositivo de destino 116 podem ser qualquer um de uma ampla gama de dispositivos, incluindo computadores de mesa, notebooks (isto é, laptops), tablets, decodificadores, aparelhos de telefone, tais como smartphones, televisores, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivos de fluxo contínuo de vídeo, ou semelhantes. Em alguns casos, o dispositivo de origem 102 e o dispositivo de destino 116 podem ser equipados para comunicação sem fio e, portanto, podem ser referido como dispositivos de comunicação sem fio.
[0032] No exemplo da Figura 1, o dispositivo de origem 102 inclui fonte de vídeo 104, memória 106, codificador de vídeo 200 e interface de saída 108. O dispositivo de destino 116 inclui interface de entrada 122, decodificador de vídeo 300, memória 120 e dispositivo de exibição 118. De acordo com esta divulgação, o codificador de vídeo 200 do dispositivo de origem 102 e decodificador de vídeo 300 do dispositivo de destino 116 podem ser configurados para aplicar as técnicas para ajuste de faixa dinâmica. Assim, o dispositivo de origem 102 representa um exemplo de um dispositivo de decodificação de vídeo, enquanto o dispositivo de destino 116 representa um exemplo de um dispositivo de decodificação de vídeo. Em outros exemplos, um dispositivo de origem e um dispositivo destino podem incluir outros componentes ou arranjos. Por exemplo, o dispositivo de origem 102 pode receber dados de vídeo de uma fonte de vídeo externa, tal como uma câmera externa. Da mesma forma, o dispositivo de destino 116 pode fazer interface com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0033] O sistema 100, conforme mostrado na Figura 1, é apenas um exemplo. Em geral, qualquer dispositivo de codificação e/ou decodificação de vídeo digital pode realizar técnicas para ajuste de faixa dinâmica. O dispositivo de origem 102 e o dispositivo de destino 116 são meramente exemplos de tais dispositivos de codificação em que o dispositivo de origem 102 gera dados de vídeo codificados para transmissão ao dispositivo de destino 116. Esta divulgação refere-se a um dispositivo de “codificação” como um dispositivo que realiza codificação (codificação e/ou decodificação) de dados. Assim, o codificador de vídeo 200 e o decodificador de vídeo 300 representam exemplos de dispositivos de codificação, em particular, um codificador de vídeo e um decodificador de vídeo, respectivamente. Em alguns exemplos, os dispositivos 102, 116 podem operar de uma maneira substancialmente simétrica de modo que cada um dos dispositivos 102, 116 inclua componentes de codificação e decodificação de vídeo. Portanto, o sistema 100 pode suportar transmissão de vídeo unilateral ou bidirecional entre dispositivos de vídeo 102, 116, por exemplo, para fluxo contínuo de vídeo, reprodução de vídeo, radiodifusão de vídeo ou telefonia de vídeo.
[0034] Em geral, a fonte de vídeo 104 representa uma fonte de dados de vídeo (isto é, dados de vídeo brutos, não codificados) e fornece uma série sequencial de imagens (também conhecida como “quadros”) dos dados de vídeo ao codificador de vídeo 200, que codifica dados para as imagens. A fonte de vídeo 104 do dispositivo de origem 102 pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo bruto capturado anteriormente e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Ainda como alternativa, a fonte de vídeo 104 pode gerar dados baseados em gráficos de computador como o vídeo de origem, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em cada caso, o codificador de vídeo 200 codifica os dados de vídeo capturados, pré-capturados ou gerados por computador. O codificador de vídeo 200 pode reorganizar as imagens da ordem recebida (às vezes referida como “ordem de exibição”) em uma ordem de codificação para codificação. O codificador de vídeo 200 pode gerar um fluxo de bits incluindo dados de vídeo codificados. O dispositivo de origem 102 pode então emitir os dados de vídeo codificados por meio da interface de saída 108 em meio legível por computador 110 para recepção e/ou recuperação, por exemplo, pela interface de entrada 122 do dispositivo de destino 116.
[0035] A memória 106 do dispositivo de origem 102 e memória 120 do dispositivo de destino 116 representam memórias de uso geral. Em algum exemplo, as memórias 106, 120 podem armazenar dados de vídeo brutos, por exemplo, vídeo bruto da fonte de vídeo 104, e dados de vídeo brutos decodificados do decodificador de vídeo 300. Adicionalmente ou alternativamente, as memórias 106, 120 podem armazenar instruções de software executáveis, por exemplo, pelo codificador de vídeo 200 e o decodificador de vídeo 300, respectivamente. Embora mostrado separadamente do codificador de vídeo 200 e o decodificador de vídeo 300 neste exemplo, deve ser entendido que o codificador de vídeo 200 e o decodificador de vídeo 300 também podem incluir memórias internas para fins funcionalmente semelhantes ou equivalentes. Além disso, as memórias 106, 120 podem armazenar dados de vídeo codificados, por exemplo, emitidos do codificador de vídeo 200 e inseridos no decodificador de vídeo 300. Em alguns exemplos, porções de memórias 106, 120 podem ser alocadas como um ou mais buffers de vídeo, por exemplo, para armazenar dados de vídeo brutos, decodificados e/ou codificados.
[0036] Meio legível por computador 110 pode representar qualquer tipo de meio ou dispositivo capaz de transportar os dados de vídeo codificados do dispositivo de origem 102 para o dispositivo de destino 116. Em um exemplo, o meio legível por computador 110 representa um meio de comunicação para habilitar o dispositivo de origem 102 para transmitir dados de vídeo codificados diretamente ao dispositivo de destino 116 em tempo real, por exemplo, através de uma rede de radiofrequência ou rede baseada em computador. A interface de saída 108 pode modular um sinal de transmissão incluindo os dados de vídeo codificados, e a interface de entrada 122 pode modular o sinal de transmissão recebido, de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio. O meio de comunicação pode ser qualquer meio de comunicação sem fio ou a cabo, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla ou uma rede global, tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 102 com o dispositivo de destino 116.
[0037] Em alguns exemplos, o dispositivo de origem 102 pode emitir dados codificados da interface de saída 108 para o dispositivo de armazenamento 116. Da mesma forma, o dispositivo de destino 116 pode acessar dados codificados do dispositivo de armazenamento 116 por meio da interface de entrada 122. O dispositivo de armazenamento 116 pode incluir qualquer de uma variedade de meio de armazenamento de dados distribuído ou acessado localmente, tal como um disco rígido, disco Blu-ray®, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outro meio de armazenamento digital adequado para armazenar dados de vídeo codificados.
[0038] Em alguns exemplos, o dispositivo de origem 102 pode emitir dados de vídeo codificados para o servidor de arquivos 114 ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 102. O dispositivo de destino 116 pode acessar dados de vídeo armazenados a partir do servidor de arquivos 114 via fluxo contínuo ou download. O servidor de arquivos 114 pode ser qualquer tipo de dispositivo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados ao dispositivo de destino 116. O servidor de arquivos 114 pode representar um servidor web (por exemplo, para um site), uma servidor de Protocolo de Transferência de Arquivos (FTP), um dispositivo de rede de entrega de conteúdo ou um dispositivo de armazenamento conectado à rede (NAS). O dispositivo de destino 116 pode acessar dados de vídeo codificados a partir do servidor de arquivos 114 por meio de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão a cabo (por exemplo, DSL, modem a cabo etc.), ou uma combinação de ambos que é adequada para acessar dados de vídeo codificados armazenados em servidor de arquivos 114. O servidor de arquivos 114 e a interface de entrada 122 podem ser configurados para operar de acordo com um protocolo de transmissão de fluxo contínuo, um protocolo de transmissão de download ou uma combinação dos mesmos.
[0039] A interface de saída 108 e a interface de entrada 122 podem representar transmissores/receptores sem fio, modems, componentes de rede a cabo (por exemplo, placas Ethernet), componentes de comunicação sem fio que operam de acordo com qualquer de uma variedade de padrões IEEE 802.11, ou outros componentes físicos. Em exemplos onde a interface de saída 108 e a interface de entrada 122 incluem componentes sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, tais como dados de vídeo codificados, de acordo com um padrão de comunicação celular, tal como 4G, 4G-LTE (Evolução de Longo Prazo), LTE Avançada, 5G, ou similares. Em alguns exemplos em que a interface de saída 108 é um transmissor sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, tais como dados de vídeo codificados, de acordo com outros padrões sem fio, tais como uma especificação IEEE 802.11, uma especificação IEEE 802.15 (por exemplo, ZigBee™), um padrão Bluetooth™, ou similares. Em alguns exemplos, o dispositivo de origem 102 e/ou dispositivo de destino 116 podem incluir respectivos dispositivos sistema-em-chip (SoC). Por exemplo, o dispositivo de origem 102 pode incluir um dispositivo SoC para realizar a funcionalidade atribuída ao codificador de vídeo 200 e/ou interface de saída 108, e o dispositivo destino 116 pode incluir um dispositivo SoC para realizar a funcionalidade atribuída ao decodificador de vídeo 300 e/ou interface de entrada 122.
[0040] As técnicas desta divulgação podem ser aplicadas à codificação de vídeo em apoio a qualquer uma de uma variedade de aplicações multimídia, tais como radiodifusões de televisão aéreas, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões de vídeo em fluxo contínuo pela Internet, tal como fluxo contínuo adaptativo dinâmico sobre HTTP (DASH), vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outras aplicações.
[0041] A interface de entrada 122 do dispositivo de destino 116 recebe um fluxo de bits de vídeo codificado do meio legível por computador 110 (por exemplo, dispositivo de armazenamento 112, servidor de arquivos 114 ou semelhantes). O meio legível por computador de fluxo de bits de vídeo codificado 110 pode incluir informações de sinalização definidas pelo codificador de vídeo 200, que também é usado pelo decodificador de vídeo 300, tais como elementos de sintaxe tendo valores que descrevem características e/ou processamento de blocos de vídeo ou outras unidades codificadas (por exemplo, fatias, imagens, grupos de imagens, sequências, ou semelhantes). O dispositivo de exibição 118 exibe imagens decodificadas dos dados de vídeo decodificados para um usuário. O dispositivo de exibição 118 pode representar qualquer um de uma variedade de dispositivos de exibição, tais como uma tela de cristal líquido (LCD), uma tela de plasma, uma tela de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0042] Embora não mostrado na Figura 1, em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser integrados com um codificador de áudio e/ou decodificador de áudio, e pode incluir unidades MUX- DEMUX apropriadas, ou outro hardware e/ou software, para tratar fluxos multiplexados incluindo áudio e vídeo em um fluxo de dados comum. Se aplicável, as unidades MUX-DEMUX podem estar em conformidade com o protocolo multiplexador ITU H.223 ou outros protocolos, tais como o protocolo de datagrama de usuário (UDP).
[0043] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser, cada um, implementados como qualquer um de uma variedade de circuitos codificadores e/ou decodificadores adequados, tais como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador adequado e não transitório, e executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta divulgação. Cada codificador de vídeo 200 e decodificador de vídeo 300 pode ser incluído em um ou mais codificadores ou decodificadores, podendo ser integrados como parte de um codificador/decodificador combinado (CODEC) em um respectivo dispositivo. Um dispositivo incluindo codificador de vídeo 200 e/ou decodificador de vídeo 300 pode incluir um circuito integrado, um microprocessador e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0044] Como será explicado em mais detalhes abaixo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para determinar parâmetros de quantização para componentes de croma de uma imagem de dados de vídeo de maneira que reduz artefatos de croma em dados de vídeo HDR e WCG. Por exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para determinar um valor de parâmetro de quantização (QP) de base da imagem de dados de vídeo, determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma com base no valor de QP de base e uma tabela de pesquisa a partir de múltiplas tabelas de pesquisa, em que a tabela de pesquisa é com base em características de vídeo da imagem de dados de vídeo, determinar o valor de QP de croma como uma função do valor de deslocamento de QP de croma intermediário, e codificar (por exemplo, codificar ou decodificar) a imagem de dados de vídeo usando o valor de QP de croma.
[0045] O codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com um padrão de codificação de vídeo, tal como ITU-T H.265, também referido como Codificação de Vídeo de Alta Eficiência (HEVC) ou suas extensões, tais como as extensões de codificação de vídeo escalonáveis ou multivista. Alternativamente, o codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com outros padrões proprietários ou da indústria, tais como o Modelo de Teste de Exploração Conjunta (JEM) ou ITU-T H.266, também referido como Codificação de Vídeo Versátil (VVC) Um esboço recente do padrão VVC é descrito em Bross, et al. “Versatile Video Coding (Draft 4)”, Joint Video Experts Team (JVET) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 13ª Encontro: Marrakech, MA, 9-18 de janeiro de 2019, JVET-M1001 (doravante “VVC Draft 4”). As técnicas desta divulgação, entretanto, não estão limitadas a nenhum padrão de codificação em particular.
[0046] Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem realizar codificação de imagens baseada em blocos. O termo “bloco” geralmente se refere a uma estrutura incluindo dados a serem processados (por exemplo, codificados, decodificados ou de outra forma usados no processo de codificação e/ou decodificação). Por exemplo, um bloco pode incluir uma matriz bidimensional de amostras de dados de luminância e/ou crominância. Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar dados de vídeo representados em um formato YUV (por exemplo, Y, Cb, Cr). Ou seja, em vez de codificar dados de vermelho, verde e azul (RGB) para amostras de uma imagem, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar componentes de luminância e crominância, em que os componentes de crominância podem incluir componentes de crominância de matiz vermelho e matiz azul. Em alguns exemplos, o codificador de vídeo 200 converte os dados formatados em RGB recebidos em uma representação YUV antes da codificação, e o decodificador de vídeo 300 converte a representação YUV para o formato RGB. Alternativamente, unidades de pré- e pós-processamento (não mostradas) podem realizar essas conversões.
[0047] Esta divulgação pode geralmente se referir à codificação (por exemplo, codificação e decodificação) de imagens para incluir o processo de codificação ou decodificação de dados da imagem. Da mesma forma, esta divulgação pode se referir à codificação de blocos de uma imagem para incluir o processo de codificação ou decodificação de dados para os blocos, por exemplo, predição e/ou codificação residual. Um fluxo de bits de vídeo codificado geralmente inclui uma série de valores para elementos de sintaxe representativos de decisões de codificação (por exemplo, modos de codificação) e particionamento de imagens em blocos. Assim, referências à codificação de uma imagem ou bloco devem geralmente ser entendidas como valores de codificação para elementos de sintaxe que formam a imagem ou bloco.
[0048] HEVC define vários blocos, incluindo unidades de codificação (CUs), unidades de predição (PUs) e unidades de transformada (TUs). De acordo com HEVC, um codificador de vídeo (tal como o codificador de vídeo 200) particiona uma unidade de árvore de codificação (CTU) em CUs de acordo com uma estrutura de quadtree. Ou seja, o codificador de vídeo particiona CTUs e CUs em quatro quadrados iguais, não sobrepostos, e cada nó da quadtree tem zero ou quatro nós filhos. Os nós sem nós filhos podem ser referidos como “nós folhas”, e as CUs de tais nós folhas podem incluir uma ou mais PUs e/ou uma ou mais TUs. O codificador de vídeo ainda pode particionar PUs e TUs.
Por exemplo, em HEVC, uma quadtree residual (RQT) representa a divisão de TUs. Em HEVC, as PUs representam dados de interpredição, enquanto as TUs representam dados residuais. As CUs que são intrapreditas incluem informações de intrapredição, tais como uma indicação intramodo.
[0049] Como outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para operar de acordo com JEM ou VVC. De acordo com JEM ou VVC, um codificador de vídeo (tal como o codificador de vídeo 200) particiona uma imagem em uma pluralidade de unidades de árvore de codificação (CTUs). O codificador de vídeo 200 pode particionar uma CTU de acordo com uma estrutura de árvore, tal como uma estrutura de árvore binária quadtree (QTBT) ou uma estrutura de Árvore Multi- Tipo (MTT). A estrutura QTBT remove os conceitos de vários tipos de partição, como a separação entre CUs, PUs, e TUs de HEVC. Uma estrutura QTBT inclui dois níveis: um primeiro nível particionado de acordo com particionamento de quadtree, e um segundo nível particionado de acordo com particionamento de árvore binária. Um nó raiz da estrutura QTBT corresponde a uma CTU. Os nós folhas das árvores binárias correspondem a unidades de codificação (CUs).
[0050] Em uma estrutura de particionamento de MTT, os blocos podem ser particionados usando uma partição de quadtree (QT), uma partição de árvore binária (BT), e um ou mais tipos de partições de árvore tripla (TT). Uma partição de árvore tripla é uma partição onde um bloco é dividido em três sub-blocos. Em alguns exemplos, uma partição de árvore tripla divide um bloco em três sub- blocos sem dividir o bloco original pelo centro. Os tipos de particionamento em MTT (por exemplo, QT, BT e TT) podem ser simétricos ou assimétricos.
[0051] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar uma única estrutura QTBT ou MTT para representar cada um dos componentes de luminância e crominância, enquanto em outros exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar duas ou mais estruturas QTBT ou MTT, tal como uma estrutura QTBT/MTT para o componente de luminância e outra estrutura QTBT/MTT para ambos os componentes de crominância (ou duas estruturas QTBT/MTT para os respectivos componentes de crominância).
[0052] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para usar particionamento de quadtree por HEVC, particionamento de QTBT, particionamento de MTT, ou outras estruturas de particionamento. Para fins de explicação, a descrição das técnicas desta divulgação é apresentada com relação ao particionamento de QTBT. No entanto, deve-se entender que as técnicas desta divulgação também podem ser aplicadas a codificadores de vídeo configurados para usar particionamento de quadtree, ou também outros tipos de particionamento.
[0053] Esta divulgação pode usar “NxN” e “N por N” intercambiavelmente para se referir às dimensões de amostra de um bloco (tal como CU ou outro bloco de vídeo) em termos de dimensões verticais e horizontais, por exemplo, amostras de 16x16 ou amostras 16 por 16. Em geral, uma CU 16x16 possui 16 amostras em uma direção vertical (y = 16) e 16 amostras em uma direção horizontal (x = 16). Da mesma forma, uma CU NxN geralmente tem N amostras em uma direção vertical e N amostras em uma direção horizontal, em que N representa um valor inteiro não negativo. As amostras em uma CU podem ser dispostas em linhas e colunas. Além disso, as CUs não precisam necessariamente ter o mesmo número de amostras na direção horizontal e na direção vertical. Por exemplo, as CUs podem incluir amostras NxM, em que M não é necessariamente igual a N.
[0054] O codificador de vídeo 200 codifica dados de vídeo para CUs representando informações de predição e/ou residuais, e outras informações. As informações de predição indicam como a CU deve ser predita a fim de formar um bloco de predição para a CU. As informações residuais geralmente representam diferenças amostra por amostra entre amostras da CU antes de codificar o bloco de predição.
[0055] Para predizer uma CU, o codificador de vídeo 200 pode geralmente formar um bloco de predição para a CU através de interpredição ou intrapredição. A interpredição geralmente se refere a predizer a CU a partir de dados de uma imagem previamente codificada, enquanto a intrapredição geralmente se refere a prever a CU a partir de dados previamente codificados da mesma imagem. Para realizar a interpredição, o codificador de vídeo 200 pode gerar o bloco de predição utilizando um ou mais vetores de movimento. O codificador de vídeo 200 pode geralmente realizar uma busca de movimento para identificar um bloco de referência que se aproxime da CU, por exemplo, em termos de diferenças entre a CU e o bloco de referência. O codificador de vídeo 200 pode calcular uma métrica de diferença usando uma soma da diferença absoluta (SAD), soma de diferenças quadradas (SSD), diferença absoluta média (MAD), diferenças quadráticas médias (MSD), ou outros cálculos de diferença para determinar se um bloco de referência se aproxima da CU atual. Em alguns exemplos, o codificador de vídeo 200 pode predizer a CU atual usando predição unidirecional ou predição bidirecional.
[0056] Alguns exemplos de JEM e VVC também proveem um modo de compensação de movimento afim, que pode ser considerado um modo de interpredição. No modo de compensação de movimento afim, o codificador de vídeo 200 pode determinar dois ou mais vetores de movimento que representam movimento não translacional, tal como aproximação ou afastamento, rotação, movimento em perspectiva, ou outros tipos de movimentos irregulares.
[0057] Para realizar a intrapredição, o codificador de vídeo 200 pode selecionar um modo de intrapredição para gerar o bloco de predição. Alguns exemplos de JEM e VVC proveem sessenta e sete modos de intrapredição, incluindo vários modos direccionais, bem como modo planar e modo DC. Em geral, o codificador de vídeo 200 seleciona um modo de intrapredição que descreve amostras adjacentes a um bloco atual (por exemplo, um bloco de uma CU) a partir do qual se prediz amostras do bloco atual. Tais amostras podem geralmente estar acima, acima e à esquerda, ou à esquerda do bloco atual na mesma imagem do bloco atual, assumindo que o codificador de vídeo 200 codifica CTUs e CUs em ordem de varredura raster (esquerda para direita, cima para baixo).
[0058] O codificador de vídeo 200 codifica os dados que representam o modo de predição de um bloco atual.
Por exemplo, para modos de interpredição, o codificador de vídeo 200 pode codificar dados que representam qual dos vários modos de interpredição disponíveis é usado, bem como informações de movimento para o modo correspondente. Para interpredição unidirecional ou bidirecional, por exemplo, o codificador de vídeo 200 pode codificar vetores de movimento usando predição de vetor de movimento avançada (AMVP) ou modo de mesclagem. O codificador de vídeo 200 pode usar modos semelhantes para codificar vetores de movimento para o modo de compensação de movimento afim.
[0059] Após a predição, tal como intrapredição ou interpredição de um bloco, o codificador de vídeo 200 pode calcular os dados residuais para o bloco. Os dados residuais, tais como um bloco residual, representam diferenças de amostra por amostra entre o bloco e um bloco de predição para o bloco, formado usando o modo de predição correspondente. O codificador de vídeo 200 pode aplicar uma ou mais transformadas ao bloco residual, para produzir dados transformados em um domínio de transformada em vez do domínio de amostra. Por exemplo, o codificador de vídeo 200 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada inteira, uma transformada wavelet ou uma transformada conceitualmente semelhante a dados de vídeo residuais. Além disso, o codificador de vídeo 200 pode aplicar uma transformada secundária após a primeira transformada, tal como uma transformada secundária não separável dependente de modo (MDNSST), uma transformada dependente de sinal, uma transformada de Karhunen-Loeve (KLT), ou semelhantes. O codificador de vídeo 200 produz coeficientes de transformada após a aplicação de uma ou mais transformadas.
[0060] Conforme observado acima, após quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 200 pode realizar a quantização dos coeficientes de transformada. Quantização geralmente se refere a um processo no qual coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes, proporcionando maior compactação. Ao realizar o processo de quantização, o codificador de vídeo 200 pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. Por exemplo, o codificador de vídeo 200 pode arredondar um valor de n bits para um valor de m bits durante a quantização, em que n é maior que m. Em alguns exemplos, para realizar a quantização, o codificador de vídeo 200 pode realizar um deslocamento para a direita bit a bit do valor a ser quantizado.
[0061] Após a quantização, o codificador de vídeo 200 pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional incluindo os coeficientes de transformada quantizados. A varredura pode ser projetada para colocar coeficientes de energia mais alta (e, portanto, de frequência mais baixa) na frente do vetor e para colocar coeficientes de transformada de energia mais baixa (e, portanto, de frequência mais alta) atrás do vetor. Em alguns exemplos, o codificador de vídeo 200 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantizados para produzir um vetor serializado e, então, codificar por entropia os coeficientes de transformada quantizados do vetor. Em outros exemplos, o codificador de vídeo 200 pode realizar uma varredura adaptativa. Após varrer os coeficientes de transformada quantizados para formar o vetor unidimensional, o codificador de vídeo 200 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com codificação aritmética binária adaptativa ao contexto (CABAC). O codificador de vídeo 200 também pode codificar por entropia valores para elementos de sintaxe que descrevem metadados associados aos dados de vídeo codificados para uso pelo decodificador de vídeo 300 na decodificação dos dados de vídeo.
[0062] Para realizar a CABAC, o codificador de vídeo 200 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode estar relacionado, por exemplo, a se valores adjacentes do símbolo são de valor zero ou não. A determinação de probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0063] O codificador de vídeo 200 pode ainda gerar dados de sintaxe, tais como dados de sintaxe com base em bloco, dados de sintaxe com base em imagem, e dados de sintaxe com base em sequência, para o decodificador de vídeo 300, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia ou outros dados de sintaxe, tais como um conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS) ou conjunto de parâmetros de vídeo (VPS). O decodificador de vídeo 300 pode igualmente decodificar esses dados de sintaxe para determinar como decodificar dados de vídeo correspondentes.
[0064] Dessa forma, o codificador de vídeo 200 pode gerar um fluxo de bits incluindo dados de vídeo codificados, por exemplo, elementos de sintaxe descrevendo o particionamento de uma imagem em blocos (por exemplo, CUs) e informações de predição e/ou residuais para os blocos. Por fim, o decodificador de vídeo 300 pode receber o fluxo de bits e decodificar os dados de vídeo codificados.
[0065] Em geral, o decodificador de vídeo 300 realiza um processo recíproco ao executado pelo codificador de vídeo 200 para decodificar os dados de vídeo codificados do fluxo de bits. Por exemplo, o decodificador de vídeo 300 pode decodificar valores para elementos de sintaxe do fluxo de bits usando CABAC de maneira substancialmente semelhante, embora recíproca, ao processo de codificação CABAC do codificador de vídeo 200. Os elementos de sintaxe podem definir informações de particionamento de uma imagem em CTUs, e particionamento de cada CTU de acordo com uma estrutura de partição correspondente, tal como uma estrutura QTBT, para definir CUs da CTU. Os elementos de sintaxe podem ainda definir informações de predição e residuais para blocos (por exemplo, CUs) de dados de vídeo.
[0066] As informações residuais podem ser representadas, por exemplo, por coeficientes de transformada quantizados. O decodificador de vídeo 300 pode quantizar inversamente e transformar inversamente os coeficientes de transformada quantizados de um bloco para reproduzir um bloco residual para o bloco. O decodificador de vídeo 300 usa um modo de predição sinalizado (intra- ou interpredição) e informações de predição relacionadas (por exemplo, informações de movimento para interpredição) para formar um bloco de predição para o bloco. O decodificador de vídeo 300 pode, então, combinar o bloco de predição e o bloco residual (em uma base amostra por amostra) para reproduzir o bloco original. O decodificador de vídeo 300 pode realizar processamento adicional, tal como realizar um processo de desbloqueio para redução de artefatos visuais ao longo dos limites do bloco.
[0067] De acordo com as técnicas desta divulgação, o codificador de vídeo 200 e/ou decodificador de vídeo 300 podem ser configurados para derivar um ou mais valores intermediários de um valor de parâmetro de quantização (QP) de entrada ou um valor de escala de entrada e um ou mais conjuntos de parâmetros, e derivar um valor de QP de saída ou um parâmetro de DRA a partir dos um ou mais valores intermediários.
[0068] Em outro exemplo, como será explicado em mais detalhes abaixo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para determinar um valor de parâmetro de quantização (QP) de imagem da imagem de dados de vídeo, determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma usando o valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo, determinar o valor de QP de croma com uma segunda função do valor de deslocamento de QP de croma intermediário, e codificar ou decodificar a imagem de dados de vídeo usando o valor de QP de croma para produzir uma imagem codificada ou decodificada.
[0069] Esta divulgação geralmente pode se referir à “sinalização” de certas informações, tais como elementos de sintaxe. O termo “sinalização” geralmente pode se referir à comunicação de valores de elementos de sintaxe e/ou outros dados usados para decodificar dados de vídeo codificados. Ou seja, o codificador de vídeo 200 pode sinalizar valores para elementos de sintaxe no fluxo de bits. Em geral, a sinalização se refere à geração de um valor no fluxo de bits. Como observado acima, o dispositivo de origem 102 pode transportar o fluxo de bits para o dispositivo de destino 116 substancialmente em tempo real, ou não em tempo real, tal como pode ocorrer ao armazenar elementos de sintaxe no dispositivo de armazenamento 112 para recuperação posterior pelo dispositivo de destino 116.
[0070] As Figuras 2A e 2B são diagramas conceituais ilustrando uma estrutura de árvore binária quadtree (QTBT) exemplificativa 130, e uma unidade de árvore de codificação (CTU) correspondente 132. As linhas sólidas representam a divisão de quadtree, e as linhas pontilhadas indicam a divisão de árvore binária. Em cada nó de divisão (isto é, não folha) da árvore binária, um indicador é sinalizado para indicar qual tipo de divisão (isto é, horizontal ou vertical) é usado, em que 0 indica divisão horizontal e 1 indica divisão vertical neste exemplo. Para a divisão de quadtree, não há necessidade de indicar o tipo de divisão, uma vez que os nós de quadtree dividem um bloco horizontalmente e verticalmente em 4 sub- blocos de tamanho igual. Consequentemente, o codificador de vídeo 200 pode codificar, e o decodificador de vídeo 300 pode decodificar, elementos de sintaxe (tais como informações de divisão) para um nível de árvore de região de estrutura QTBT 130 (isto é, as linhas sólidas) e elementos de sintaxe (tais como informações de divisão) para um nível de árvore de predição de estrutura QTBT 130 (isto é, as linhas tracejadas). O codificador de vídeo 200 pode codificar, e o decodificador de vídeo 300 pode decodificar, dados de vídeo, tais como dados de predição e transformada, para CUs representadas por nós folhas terminais de estrutura QTBT 130.
[0071] Em geral, a CTU 132 da Figura 2B pode ser associada com parâmetros definindo tamanhos de blocos correspondentes a nós de estrutura QTBT 130 no primeiro e segundo níveis. Esses parâmetros podem incluir um tamanho de CTU (representando um tamanho de CTU 132 em amostras), um tamanho mínimo de quadtree (MinQTSize, representando um tamanho de nó folha de quadtree mínimo permitido), um tamanho máximo de árvore binária (MaxBTSize, representando um tamanho de nó raiz de árvore binária máximo permitido), uma profundidade máxima de árvore binária (MaxBTDepth, representando a profundidade máxima de árvore binária permitida), e um tamanho mínimo de árvore binária (MinBTSize, representando o tamanho mínimo permitido de nó folha de árvore binária).
[0072] O nó raiz de uma estrutura QTBT correspondente a uma CTU pode ter quatro nós filhos no primeiro nível da estrutura QTBT, cada um dos quais pode ser particionado de acordo com o particionamento de quadtree. Ou seja, os nós do primeiro nível são nós folha (sem nós filhos) ou têm quatro nós filhos. O exemplo de estrutura QTBT 130 representa tais nós como incluindo o nó pai e nós filhos tendo linhas sólidas para ramificações. Se os nós do primeiro nível não forem maiores do que o tamanho máximo permitido de nó raiz de árvore binária (MaxBTSize), então os nós ainda podem ser particionados pelas respectivas árvores binárias. A divisão da árvore binária de um nó pode ser iterada até que os nós resultantes da divisão atinjam o tamanho mínimo permitido de nó folha de árvore binária (MinBTSize) ou a profundidade máxima permitida de árvore binária (MaxBTDepth). O exemplo de estrutura QTBT 130 representa tais nós como tendo linhas tracejadas para ramificações. O nó folha de árvore binária é referido como unidade de codificação (CU), que é usado para predição (por exemplo, intraprediçãoimagem ou interimagem) e transformada, sem particionamento adicional. Conforme discutido acima, as CUs também podem ser referidas como “blocos de vídeo” ou “blocos”.
[0073] Em um exemplo da estrutura de particionamento de QTBT, o tamanho de CTU é definido como 128x128 (amostras de luma e duas amostras de croma de 64x64 correspondentes), o MinQTSize é definido como 16x16, o MaxBTSize é definido como 64x64, o MinBTSize (para largura e altura) é definido como 4, e o MaxBTDepth é definido como
4. O particionamento de quadtree é aplicado à CTU primeiro para gerar nós folha de quadtree. Os nós folha de quadtree podem ter um tamanho de 16x16 (isto é, o MinQTSize) a 128x128 (isto é, o tamanho de CTU). Se o nó folha de quadtree for 128x128, então, o nó não é ainda dividido pela árvore binária, pois o tamanho excede MaxBTSize (isto é, 64x64, neste exemplo). Caso contrário, o nó folha de quadtree será ainda particionado pela árvore binária.
Portanto, o nó folha de quadtree é também o nó raiz para a árvore binária e tem a profundidade de árvore binária de 0. Quando a profundidade de árvore binária atinge MaxBTDepth (4, neste exemplo), nenhuma divisão adicional é permitida. O nó de árvore binária tendo largura igual a MinBTSize (4, neste exemplo) implica que nenhuma outra divisão horizontal é permitida. Da mesma forma, um nó de árvore binária com uma altura igual a MinBTSize implica que nenhuma outra divisão vertical é permitida para esse nó de árvore binária. Como observado acima, os nós folha da árvore binária são referidos como CUs, e são ainda processados de acordo com predição e transformada sem particionamento adicional.
[0074] A Figura 3 é um diagrama de blocos ilustrando um codificador de vídeo exemplificativo 200 que pode realizar as técnicas desta divulgação. A Figura 3 é fornecida para fins de explicação e não deve ser considerada uma limitação às técnicas conforme amplamente exemplificado e descrito nesta divulgação. Para fins de explicação, esta divulgação descreve o codificador de vídeo 200 no contexto de padrões de codificação de vídeo, tais como o padrão de codificação de vídeo HEVC, JEM, e/ou o padrão de codificação de vídeo H.266/VVC em desenvolvimento. No entanto, as técnicas desta divulgação não estão limitadas a esses padrões de codificação de vídeo, e são geralmente aplicáveis à codificação e decodificação de vídeo. Como será explicado em mais detalhes abaixo, o codificador de vídeo 200 pode ser configurado para derivar valores de QP e/ou parâmetros de DRA usando as técnicas desta divulgação.
[0075] No exemplo da Figura 3, o codificador de vídeo 200 inclui memória de dados de vídeo 230, unidade de seleção de modo 202, unidade de geração residual 204, unidade de processamento de transformada 206, unidade de quantização 208, unidade de quantização inversa 210, unidade de processamento de transformada inversa 212, unidade de reconstrução 214, unidade de filtro 216, buffer de imagem decodificada (DPB) 218, unidade de codificação por entropia 220.
[0076] A memória de dados de vídeo 230 pode armazenar dados de vídeo a serem codificados pelos componentes de codificador de vídeo 200. O codificador de vídeo 200 pode receber os dados de vídeo armazenados em memória de dados de vídeo 230, por exemplo, da fonte de vídeo 104 (Figura 1). O DPB 218 pode atuar como uma memória de imagem de referência que armazena dados de vídeo de referência para uso na predição de dados de vídeo subsequentes pelo codificador de vídeo 200. A memória de dados de vídeo 230 e o DPB 218 podem ser formados por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmico (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 230 e o DPB 218 podem ser fornecidos pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 230 pode ser em chip (on-chip) com outros componentes de codificador de vídeo 200, conforme ilustrado, ou fora de chip (off-chip) em relação a esses componentes.
[0077] Nesta divulgação, referência à memória de dados de vídeo 230 não deve ser interpretada como sendo limitada à memória interna ao codificador de vídeo 200, a menos que especificamente assim descrito, ou memória externa ao codificador de vídeo 200, a menos que especificamente assim descrito. Em vez disso, referência à memória de dados de vídeo 230 deve ser entendida como memória de referência que armazena dados de vídeo que o codificador de vídeo 200 recebe para codificação (por exemplo, dados de vídeo para um bloco atual a ser codificado). A memória 106 da Figura 1 também pode fornecer armazenamento temporário de saídas das várias unidades de codificador de vídeo 200.
[0078] As várias unidades da Figura 3 são ilustradas para auxiliar na compreensão das operações realizadas pelo codificador de vídeo 200. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação dos mesmos. Os circuitos de função fixa referem-se a circuitos que fornecem funcionalidade particular, e são predefinidos nas operações que podem ser realizadas. Os circuitos programáveis referem-se a circuitos que podem ser programados para realizar várias tarefas, e fornecem funcionalidade flexível nas operações que podem ser realizadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que faz com que os circuitos programáveis operem da maneira definida por instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), mas os tipos de operações que os circuitos de função fixa realizam são geralmente imutáveis. Em alguns exemplos, as uma ou mais das unidades podem ser blocos de circuitos distintos (função fixa ou programáveis) e, em alguns exemplos, as uma ou mais unidades podem ser circuitos integrados.
[0079] O codificador de vídeo 200 pode incluir unidades lógicas e aritméticas (ALUs), unidades de função elementar (EFUs), circuitos digitais, circuitos analógicos e/ou núcleos programáveis, formados a partir de circuitos programáveis. Em exemplos em que as operações do codificador de vídeo 200 são realizadas utilizando software executado pelos circuitos programáveis, a memória 106 (Figura 1) pode armazenar o código de objeto do software que o codificador de vídeo 200 recebe e executa, ou outra memória dentro do codificador de vídeo 200 (não mostrado) pode armazenar tais instruções.
[0080] A memória de dados de vídeo 230 é configurada para armazenar dados de vídeo recebidos. O codificador de vídeo 200 pode recuperar uma imagem dos dados de vídeo a partir da memória de dados de vídeo 230 e fornecer os dados de vídeo à unidade de geração residual 204 e unidade de seleção de modo 202. Dados de vídeo na memória de dados de vídeo 230 podem ser dados de vídeo brutos que devem ser codificados.
[0081] A unidade de seleção de modo 202 inclui uma unidade de estimativa de movimento 222, unidade de compensação de movimento 224 e uma unidade de intrapredição
226. A unidade de seleção de modo 202 pode incluir unidades funcionais adicionais para realizar predição de vídeo de acordo com outros modos de predição. Como exemplos, a unidade de seleção de modo 202 pode incluir uma unidade de paleta, uma unidade de cópia intrabloco (que pode ser parte da unidade de estimativa de movimento 222 e/ou unidade de compensação de movimento 224), uma unidade afim, uma unidade de modelo linear (LM), ou semelhantes.
[0082] A unidade de seleção de modo 202 geralmente coordena várias passagens de codificação para testar combinações de parâmetros de codificação e valores de distorção de taxa resultantes para tais combinações. Os parâmetros de codificação podem incluir particionamento de CTUs em CUs, modos de predição para as CUs, tipos de transformada para dados residuais das CUs, parâmetros de quantização para dados residuais das CUs, e semelhantes. A unidade de seleção de modo 202 pode, em última análise, selecionar a combinação de parâmetros de codificação tendo valores de distorção de taxa que são melhores do que as outras combinações testadas.
[0083] O codificador de vídeo 200 pode particionar uma imagem recuperada da memória de dados de vídeo 230 em uma série de CTUs, e encapsular uma ou mais CTUs dentro de uma fatia. A unidade de seleção de modo 202 pode particionar uma CTU da imagem de acordo com uma estrutura de árvore, tal como a estrutura QTBT ou a estrutura de quadtree de HEVC descrita acima. Conforme descrito acima, o codificador de vídeo 200 pode formar uma ou mais CUs a partir do particionamento de uma CTU de acordo com a estrutura de árvore. Tal CU também pode ser geralmente referida como um “bloco de vídeo” ou “bloco”.
[0084] Em geral, a unidade de seleção de modo 202 também controla os seus componentes (por exemplo, unidade de estimativa de movimento 222, unidade de compensação de movimento 224, e unidade de intrapredição 226) para gerar um bloco de predição para um bloco atual (por exemplo, uma CU atual, ou em HEVC, a porção sobreposta de uma PU e uma TU). Para interpredição de um bloco atual, a unidade de estimativa de movimento 222 pode realizar uma pesquisa de movimento para identificar um ou mais blocos de referência com maior correspondência em uma ou mais imagens de referência (por exemplo, uma ou mais imagens previamente codificadas armazenadas no DPB 218). Em particular, a unidade de estimativa de movimento 222 pode calcular um valor representativo de quão semelhante um bloco de referência potencial é ao bloco atual, por exemplo, de acordo com soma de diferença absoluta (SAD), soma de diferenças quadradas (SSD), diferença média absoluta (MAD), diferenças quadradas médias (MSD), ou semelhantes. A unidade de estimativa de movimento 222 geralmente pode realizar esses cálculos usando diferenças de amostra por amostra entre o bloco atual e o bloco de referência sendo consideradas. A unidade de estimativa de movimento 222 pode identificar um bloco de referência tendo um valor mais baixo resultante desses cálculos, indicando um bloco de referência que mais se aproxima do bloco atual.
[0085] A unidade de estimativa de movimento 222 pode formar um ou mais vetores de movimento (MVs) que definem as posições dos blocos de referência nas imagens de referência em relação à posição do bloco atual em uma imagem atual. A unidade de estimativa de movimento 222 pode então fornecer os vetores de movimento para a unidade de compensação de movimento 224. Por exemplo, para interpredição unidirecional, a unidade de estimativa de movimento 222 pode fornecer um único vetor de movimento, enquanto que, para a interpredição bidirecional, a unidade de estimativa de movimento 222 pode fornecer dois vetores de movimento. A unidade de compensação de movimento 224 pode, então, gerar um bloco de predição usando os vetores de movimento. Por exemplo, a unidade de compensação de movimento 224 pode recuperar dados do bloco de referência usando o vetor de movimento. Como outro exemplo, se o vetor de movimento tiver precisão de amostra fracionária, a unidade de compensação de movimento 224 pode interpolar valores para o bloco de predição de acordo com um ou mais filtros de interpolação. Além disso, para a interpredição bidirecional, a unidade de compensação de movimento 224 pode recuperar dados para dois blocos de referência identificados pelos respectivos vetores de movimento e combinar os dados recuperados, por exemplo, através de média amostra por amostra ou média ponderada.
[0086] Como outro exemplo, para intrapredição, ou codificação intrapredição, a unidade de intrapredição 226 pode gerar o bloco de predição a partir de amostras adjacentes ao bloco atual. Por exemplo, para modos direcionais, a unidade de intrapredição 226 pode geralmente combinar matematicamente valores de amostras adjacentes e preencher esses valores calculados na direção definida através do bloco atual para produzir o bloco de predição. Como outro exemplo, para o modo DC, a unidade de intrapredição 226 pode calcular uma média das amostras adjacentes ao bloco atual e gerar o bloco de predição para incluir essa média resultante para cada amostra do bloco de predição.
[0087] A unidade de seleção de modo 202 fornece o bloco de predição para a unidade de geração residual 204. A unidade de geração residual 204 recebe uma versão bruta e não codificada do bloco atual da memória de dados de vídeo 230 e o bloco de predição da unidade de seleção de modo
202. Unidade de geração residual 204 calcula diferenças amostra por amostra entre o bloco atual e o bloco de predição. As diferenças amostra por amostra resultantes definem um bloco residual para o bloco atual. Em alguns exemplos, a unidade de geração residual 204 pode também determinar diferenças entre os valores de amostra no bloco residual para gerar um bloco residual usando modulação por código de pulso diferencial residual (RDPCM). Em alguns exemplos, a unidade de geração residual 204 pode ser formada utilizando um ou mais circuitos subtratores que realizam subtração binária.
[0088] Em exemplos em que a unidade de seleção de modo 202 particiona CUs em PUs, cada PU pode ser associada a uma unidade de predição de luma e unidades de predição de croma correspondentes. O codificador de vídeo 200 e o decodificador de vídeo 300 podem suportar PUs de vários tamanhos. Conforme indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação de luma da CU e o tamanho de uma PU pode se referir ao tamanho de uma unidade de predição de luma da PU. Supondo que o tamanho de uma determinada CU seja 2Nx2N, o codificador de vídeo 200 pode suportar tamanhos de PU de 2Nx2N ou NxN para intrapredição, e tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN ou semelhantes para interpredição. O codificador de vídeo 200 e o decodificador de vídeo 300 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N, e nRx2N para interpredição.
[0089] Nos exemplos em que a unidade de seleção de modo não particiona uma CU em PUs, cada CU pode ser associada a um bloco de codificação de luma e blocos de codificação de croma correspondentes. Como acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação de luma da CU. O codificador de vídeo 200 e o decodificador de vídeo 300 podem suportar tamanhos de CU de 2Nx2N, 2NxN, ou Nx2N.
[0090] Para outras técnicas de codificação de vídeo, tais como uma codificação de modo de cópia intrabloco, uma codificação de modo afim, codificação de modo de modelo linear (LM), como alguns exemplos, a unidade de seleção de modo 202, por meio de respectivas unidades associadas com as técnicas de codificação, gera um bloco de predição para o bloco atual sendo codificado. Em alguns exemplos, tais como a codificação em modo de paleta, a unidade de seleção de modo 202 pode não gerar um bloco de predição e, em vez disso, gerar elementos de sintaxe que indiquem a forma de reconstruir o bloco com base em uma paleta selecionada. Em tais modos, a unidade de seleção de modo 202 pode fornecer esses elementos de sintaxe para a unidade de codificação por entropia 220 para serem codificados.
[0091] Como descrito acima, a unidade de geração residual 204 recebe os dados de vídeo para o bloco atual e o bloco de predição correspondente. A unidade de geração residual 204, então, gera um bloco residual para o bloco atual. Para gerar o bloco residual, a unidade de geração residual 204 calcula as diferenças amostra por amostra entre o bloco de predição e o bloco atual.
[0092] A unidade de processamento de transformada 206 aplica uma ou mais transformadas ao bloco residual para gerar um bloco de coeficientes de transformada (referido neste documento como um “bloco de coeficiente de transformada”). A unidade de processamento de transformada 206 pode aplicar várias transformadas a um bloco residual para formar o bloco de coeficiente de transformada. Por exemplo, a unidade de processamento de transformada 206 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada direcional, uma transformada de Karhunen- Loeve (KLT) ou uma transformada conceitualmente semelhante a um bloco residual. Em alguns exemplos, a unidade de processamento de transformada 206 pode realizar múltiplas transformadas para um bloco residual, por exemplo, uma transformada primária e uma transformada secundária, tal como uma transformada rotacional. Em alguns exemplos, a unidade de processamento de transformada 206 não aplica transformadas a um bloco residual.
[0093] A unidade de quantização 208 pode quantizar os coeficientes de transformada em um bloco de coeficiente de transformada, para produzir um bloco de coeficiente de transformada quantizado. A unidade de quantização 208 pode quantizar coeficientes de transformada de um bloco de coeficientes de transformada de acordo com um valor de parâmetro de quantização (QP) associado ao bloco atual. O codificador de vídeo 200 (por exemplo, através da unidade de seleção de modo 202) pode ajustar o grau de quantização aplicado aos blocos de coeficiente associados ao bloco atual, ajustando o valor de QP associado à CU. A quantização pode introduzir perda de informação e, assim, os coeficientes de transformada quantizados podem ter menor precisão do que os coeficientes de transformada originais produzidos pela unidade de processamento de transformada 206.
[0094] Como será explicado em mais detalhes abaixo, a unidade de quantização 208 pode ser configurada para determinar um valor de parâmetro de quantização (QP) de imagem da imagem de dados de vídeo, determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma com base no valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo, determinar o valor de QP de croma como uma função do valor de deslocamento de QP de croma intermediário, e codificar (por exemplo, codificar) a imagem de dados de vídeo usando o valor de QP de croma.
[0095] A unidade de quantização inversa 210 e unidade de processamento de transformada inversa 212 podem aplicar quantização inversa e transformadas inversas a um bloco de coeficiente de transformada quantizado, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficiente de transformada. De acordo com as técnicas desta divulgação, a unidade de quantização inversa 210 pode ser configurada para usar o valor de QP de croma determinado pela unidade de quantização 208 para realizar a quantização inversa. A unidade de reconstrução 214 pode produzir um bloco reconstruído correspondente ao bloco atual (embora potencialmente com algum grau de distorção) com base no bloco residual reconstruído e um bloco de predição gerado pela unidade de seleção de modo
202. Por exemplo, a unidade de reconstrução 214 pode adicionar amostras do bloco residual reconstruído a amostras correspondentes do bloco de predição gerado pela unidade de seleção de modo 202 para produzir o bloco reconstruído.
[0096] A unidade de filtro 216 pode realizar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 216 pode realizar operações de desbloqueio para reduzir artefatos de bloqueio ao longo de bordas de CUs. As operações da unidade de filtro 216 podem ser ignoradas, em alguns exemplos.
[0097] O codificador de vídeo 200 pode armazenar blocos reconstruídos em DPB 218. Por exemplo, em exemplo em que as operações da unidade de filtro 216 não são necessárias, a unidade de reconstrução 214 pode armazenar blocos reconstruídos no DPB 218. Em exemplos em que as operações da unidade de filtro 216 são necessárias, a unidade de filtro 216 pode armazenar os blocos reconstruídos filtrados no DPB 218. A unidade de estimativa de movimento 222 e a unidade de compensação de movimento 224 podem recuperar uma imagem de referência do DPB 218, formada a partir dos blocos reconstruídos (e potencialmente filtrados), para intrapredizer blocos de imagens subsequentemente codificadas. Além disso, a unidade de intrapredição 226 pode usar blocos reconstruídos no DPB 218 de uma imagem atual para intrapredizer outros blocos na imagem atual.
[0098] Em geral, a unidade de codificação por entropia 220 pode codificar por entropia elementos de sintaxe recebidos de outros componentes funcionais do codificador de vídeo 200. Por exemplo, a unidade de codificação por entropia 220 pode codificar por entropia blocos de coeficiente de transformada quantizados a partir da unidade de quantização 208. Como outro exemplo, a unidade de codificação por entropia 220 pode codificar por entropia elementos de sintaxe de predição (por exemplo, informações de movimento para interpredição ou informações intramodo para intrapredição) a partir da unidade de seleção de modo 202. A unidade de codificação por entropia 220 pode realizar uma ou mais operações de codificação por entropia nos elementos de sintaxe, que são outro exemplo de dados de vídeo, para gerar dados codificados por entropia. Por exemplo, a unidade de codificação por entropia 220 pode realizar uma operação de codificação de comprimento variável adaptável ao contexto (CAVLC), uma operação CABAC, uma operação de codificação de comprimento variável a variável (V2V), uma operação de codificação aritmética binária adaptável ao contexto baseada em sintaxe (SBAC), uma operação de codificação por Entropia de Particionamento de Intervalo de Probabilidade (PIPE), uma operação de codificação Exponential-Golomb, ou outro tipo de operação de codificação por entropia nos dados. Em alguns exemplos, a unidade de codificação por entropia 220 pode funcionar em modo bypass em que elementos de sintaxe não são codificados por entropia.
[0099] O codificador de vídeo 200 pode emitir um fluxo de bits que inclui os elementos de sintaxe codificados por entropia necessários para reconstruir blocos de uma fatia ou imagem. Em particular, a unidade de codificação por entropia 220 pode emitir o fluxo de bits
[0100] As operações descritas acima são descritas com relação a um bloco. Tal descrição deve ser entendida como sendo operações para um bloco de codificação de luma e/ou blocos de codificação de croma. Como descrito acima, em alguns exemplos, o bloco de codificação de luma e os blocos de codificação de croma são componentes de luma e croma de uma CU. Em alguns exemplos, o bloco de codificação de luma e os blocos de codificação de croma são componentes de luma e croma de uma PU.
[0101] Em alguns exemplos, as operações realizadas em relação a um bloco de codificação de luma não precisam de ser repetidas para os blocos de codificação de croma. A título de exemplo, as operações para identificar um vetor de movimento (MV) e imagem de referência para um bloco de codificação de luma não precisam ser repetidas para identificar um MV e imagem de referência para os blocos de croma. Em vez disso, o MV para o bloco de codificação de luma pode ser escalado para determinar o MV para os blocos de croma, e a imagem de referência pode ser a mesma. Como outro exemplo, o processo de intrapredição pode ser o mesmo para os blocos de codificação de luma e os blocos de codificação de croma.
[0102] A Figura 4 é um diagrama de blocos ilustrando um decodificador de vídeo exemplificativo 300 que pode realizar as técnicas desta divulgação. A Figura 4 é fornecida para fins de explicação e não é limitada às técnicas conforme amplamente exemplificado e descrito nesta divulgação. Para fins de explicação, esta divulgação descreve o decodificador de vídeo 300 de acordo com as técnicas de JEM, VVC e HEVC. No entanto, as técnicas desta divulgação podem ser realizadas por dispositivos de codificação de vídeo que são definidos para outros padrões de codificação de vídeo. Como será explicado em mais detalhes abaixo, o decodificador de vídeo 300 pode ser configurado para derivar valores de QP e/ou parâmetros de DRA usando as técnicas desta divulgação.
[0103] No exemplo da Figura 4, o decodificador de vídeo 300 inclui memória de buffer de imagem codificada (CPB) 320, unidade de decodificação por entropia 302, unidade de processamento de predição 304, unidade de quantização inversa 306, unidade de processamento de transformada inversa 308, unidade de reconstrução 310, unidade de filtro 312, e buffer de imagem decodificada (DPB) 314. A unidade de processamento de predição 304 inclui unidade de compensação de movimento 316 e unidade intrapredição 318. A unidade de processamento de predição 304 pode incluir unidades de adição para realizar predição de acordo com outros modos de predição. Como exemplos, a unidade de processamento de predição 304 pode incluir uma unidade de paleta, uma unidade de cópia intrabloco (que pode fazer parte da unidade de compensação de movimento 316), uma unidade afim, uma unidade de modelo linear (LM), ou semelhantes. Em outros exemplos, o decodificador de vídeo 300 pode incluir mais, menos ou diferentes componentes funcionais.
[0104] A memória CPB 320 pode armazenar dados de vídeo, tais como um fluxo de bits de vídeo codificado, a ser decodificado pelos componentes do decodificador de vídeo 300. Os dados de vídeo armazenados na memória CPB 320 podem ser obtidos, por exemplo, do meio legível por computador 110 (Figura 1). A memória CPB 320 pode incluir um CPB que armazena dados de vídeo de codificados (por exemplo, elementos de sintaxe) de um fluxo de bits de vídeo codificado. Além disso, a memória CPB 320 pode armazenar dados de vídeo que não sejam elementos de sintaxe de uma imagem codificada, tais como dados temporários representando saídas das várias unidades do decodificador de vídeo 300. O DPB 314 geralmente armazena imagens decodificadas, que o decodificador de vídeo 300 pode emitir e/ou usar como dados de vídeo de referência ao decodificar dados ou imagens subsequentes do fluxo de bits de vídeo codificado. A memória CPB 320 e o DPB 314 podem ser formados por qualquer um de uma variedade de dispositivos de memória, tais como DRAM, incluindo SDRAM, MRAM, RRAM, ou outros tipos de dispositivos de memória. A memória CPB 320 e o DPB 314 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória CPB 320 pode ser em chip (on-chip) com outros componentes do decodificador de vídeo 300, ou fora de chip (off-chip) em relação a esses componentes.
[0105] Adicionalmente ou alternativamente, em alguns exemplos, o decodificador de vídeo 300 pode recuperar dados de vídeo de codec da memória 120 (Figura 1). Ou seja, a memória 120 pode armazenar dados conforme discutido acima com a memória CPB 320. Da mesma forma, a memória 120 pode armazenar instruções a serem executadas pelo decodificador de vídeo 300, quando parte ou toda a funcionalidade do decodificador de vídeo 300 é implementada em software a ser executado por circuitos de processamento do decodificador de vídeo 300.
[0106] As várias unidades mostradas na Figura 4 são ilustradas para auxiliar na compreensão das operações realizadas pelo decodificador de vídeo 300. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis, ou uma combinação dos mesmos. Semelhante à Figura 3, os circuitos de função fixa referem- se a circuitos que fornecem funcionalidade particular, e são predefinidos nas operações que podem ser realizadas. Os circuitos programáveis referem-se a circuitos que podem ser programados para realizar várias tarefas, e fornecem funcionalidade flexível nas operações que podem ser realizadas. Por exemplo, circuitos programáveis podem executar software ou firmware que faz com que os circuitos programáveis operem da maneira definida por instruções de software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), mas os tipos de operações que os circuitos de função fixa realizam são geralmente imutáveis. Em alguns exemplos, as uma ou mais das unidades pode ser blocos de circuitos distintos (função fixa ou programáveis) e, em alguns exemplos, as uma ou mais unidades podem ser circuitos integrados.
[0107] O decodificador de vídeo 300 pode incluir ALUs, EFUs, circuitos digitais, circuitos analógicos e/ou núcleos programáveis formados a partir de circuitos programáveis. Em exemplos em que as operações do decodificador de vídeo 300 são realizadas por software executado nos circuitos programáveis, memória em chip (on-
chip) ou fora de chip (off-chip) pode armazenar instruções (por exemplo, código do objeto) do software que o decodificador de vídeo 300 recebe e executa.
[0108] A unidade de decodificação por entropia 302 pode receber dados de vídeo de codificados do CPB e decodificar por entropia os dados de vídeo para reproduzir elementos de sintaxe. A unidade de processamento de predição 304, unidade de quantização inversa 306, unidade de processamento de transformada inversa 308, unidade de reconstrução 310 e unidade de filtro 312 podem gerar dados de vídeo de decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[0109] Em geral, o decodificador de vídeo 300 reconstrói uma imagem bloco a bloco. O decodificador de vídeo 300 pode realizar uma operação de reconstrução em cada bloco individualmente (em que o bloco atualmente sendo reconstruído, ou seja, decodificado, pode ser referido como um “bloco atual”).
[0110] A unidade de decodificação por entropia 302 pode decodificar por entropia elementos de sintaxe definindo coeficientes de transformada quantizados de um bloco de coeficiente de transformada quantizado, bem como informações de transformada, tais como um parâmetro de quantização (QP) e/ou indicação(ões) de modo de transformada. A unidade de quantização inversa 306 pode usar o QP associado ao bloco de coeficiente de transformada quantizado para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa para a unidade de quantização inversa 306 aplicar. A unidade de quantização inversa 306 pode, por exemplo, realizar uma operação de deslocamento à esquerda bit a bit para quantizar inversamente os coeficientes de transformada quantizados. A unidade de quantização inversa 306 pode, assim, formar um bloco de coeficiente de transformada incluindo coeficientes de transformada.
[0111] Como será explicado em mais detalhes abaixo, a unidade de quantização inversa 306 pode ser configurada para determinar um valor de parâmetro de quantização (QP) de imagem da imagem de dados de vídeo, determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma com base no valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo, determinar o valor de QP de croma como uma função do valor de deslocamento de QP de croma intermediário, e codificar (por exemplo, decodificar) a imagem de dados de vídeo usando o valor de QP de croma.
[0112] Após a unidade de quantização inversa 306 formar o bloco de coeficiente de transformada, a unidade de processamento de transformada inversa 308 pode aplicar uma ou mais transformadas inversas ao bloco de coeficiente de transformada para gerar um bloco residual associado ao bloco atual. Por exemplo, a unidade de processamento de transformada inversa 308 pode aplicar uma DCT inverso, uma transformada inteira inversa, uma transformada de Karhunen- Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa ou outra transformada inversa ao bloco de coeficiente.
[0113] Além disso, a unidade de processamento de predição 304 gera um bloco de predição de acordo com elementos de sintaxe de informações de predição que foram decodificados por entropia pela unidade de decodificação por entropia 302. Por exemplo, se os elementos de sintaxe de informações de predição indicarem que o bloco atual é interpredito, a unidade de compensação de movimento 316 pode gerar o bloco de predição. Neste caso, os elementos de sintaxe de informações de predição podem indicar uma imagem de referência no DPB 314 a partir da qual recuperam um bloco de referência, bem como um vetor de movimento identificando uma localização do bloco de referência na imagem de referência em relação à localização do bloco atual na imagem atual. A unidade de compensação de movimento 316 pode geralmente realizar o processo de interpredição de maneira que é substancialmente semelhante ao descrito com relação à unidade de compensação de movimento 224 (Figura 3).
[0114] Como outro exemplo, se os elementos de sintaxe de informações de predição indicarem que o bloco atual é intrapredito, a unidade de intrapredição 318 pode gerar o bloco de predição de acordo com um modo de intrapredição indicado pelos elementos de sintaxe de informações de predição. Novamente, a unidade de intrapredição 318 pode geralmente realizar o processo de intrapredição de maneira que substancialmente semelhante ao descrito em relação à unidade de intrapredição 226 (Figura 3). A unidade de intrapredição 318 pode recuperar dados de amostras adjacentes ao bloco atual do DPB 314.
[0115] A unidade de reconstrução 310 pode reconstruir o bloco atual usando o bloco de predição e o bloco residual. Por exemplo, a unidade de reconstrução 310 pode adicionar amostras do bloco residual a amostras correspondentes do bloco de predição para reconstruir o bloco atual.
[0116] A unidade de filtro 312 pode realizar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 312 pode realizar operações de desbloqueio para reduzir artefatos de bloqueio ao longo das bordas dos blocos reconstruídos. As operações da unidade de filtro 312 não são necessariamente realizadas em todos os exemplos.
[0117] O decodificador de vídeo 300 pode armazenar os blocos reconstruídos no DPB 314. Conforme discutido acima, o DPB 314 pode fornecer informações de referência, tais como amostras de uma imagem atual para intrapredição e imagens previamente decodificadas para posterior compensação de movimento, à unidade de processamento de predição 304. Além disso, o decodificador de vídeo 300 pode emitir as imagens decodificadas do DPB para posterior apresentação em um dispositivo de exibição, tal como o dispositivo de exibição 118 da Figura 1.
[0118] Os aplicativos de vídeo de última geração deverão operar com dados de vídeo representando cenários capturados com HDR e/ou WCG. Os parâmetros da faixa dinâmica e gama de cores utilizadas são dois atributos independentes de conteúdo de vídeo, e sua especificação para fins de serviços de televisão digital e multimídia são definidos por diversos padrões internacionais. Por exemplo, ITU-R Rec. BT.709, “Parameter values for the HDTV standards for production and international programme exchange”, e ITU-R Rec. BT.2020, “parameter values for ultra-high definition television systems for production and international programme Exchange”, definem parâmetros para HDTV (televisão de alta definição) e UHDTV (televisão de ultra-alta definição), respectivamente, tais como faixa dinâmica padrão (SDR) e cores primárias que vão além da gama de cores padrão. Rec. BT.2100, “Image parameter values for high dynamic range television for use in production and international programme exchange” define funções de transferência e representações para uso de televisão HDR, incluindo primárias que suportam representações de ampla gama de cores.
[0119] Existem também outros documentos de organização de desenvolvimento de padrões (SDOs) que especificam atributos de faixa dinâmica e gama de cores em outros sistemas, por exemplo, a gama de cores DCI-P3 é definida em SMPTE-231-2 (Society of Motion Picture and Television ENgineers) e alguns parâmetros de HDR são definidos em SMPTE-2084. Uma breve descrição de faixa dinâmica e gama de cores para dados de vídeo é fornecida abaixo.
[0120] A faixa dinâmica é normalmente definida como a relação entre o brilho máximo e mínimo (por exemplo, luminância) do sinal de vídeo. A faixa dinâmica também pode ser medida em termos de ‘f-stop’, em que um f-stop corresponde a uma duplicação da faixa dinâmica de um sinal. Conforme definido pelo Motion Picture Expert Group (MPEG), o conteúdo que apresenta variação de brilho com mais de 16 f-stops é referido como conteúdo HDR. Em alguns termos, os níveis entre 10 e 16 f-stops são considerados faixa dinâmica intermediária, mas podem ser considerados HDR de acordo com outras definições. Em alguns exemplos desta divulgação, o conteúdo de vídeo HDR pode ser qualquer conteúdo de vídeo que tenha uma faixa dinâmica maior do que o conteúdo de vídeo tradicionalmente usado com uma faixa dinâmica padrão (por exemplo, conteúdo de vídeo conforme especificado por ITU-R Rec. BT.709).
[0121] O sistema visual humano (HVS) é capaz de perceber faixas dinâmicas muito maiores do que conteúdo SDR e conteúdo HDR. No entanto, o HVS inclui um mecanismo de adaptação para estreitar a faixa dinâmica do HVS para uma chamada faixa simultânea. A largura da faixa simultânea pode ser dependente das condições atuais de iluminação (por exemplo, brilho atual). Uma visualização 500 da faixa dinâmica fornecida por SDR de HDTV, HDR esperada de UHDTV, e a faixa dinâmica HVS é mostrada na Figura 5, embora a faixa exata possa variar com base em cada indivíduo e exibição.
[0122] As aplicações e serviços de vídeo atuais são regulamentados pela ITU Rec. 709 e fornecem SDR, normalmente suportando uma faixa de brilho (por exemplo, luminância) de cerca de 0,1 a 100 candelas (cd) por m2 (geralmente referido como “nits”), levando a menos de 10 f- stops. Espera-se que alguns exemplos de serviços de vídeo de próxima geração forneçam faixa dinâmica de até 16 f- stops. Embora especificações detalhadas para tal conteúdo estejam atualmente em desenvolvimento, alguns parâmetros iniciais foram especificados no SMPTE-2084 e ITU-R Rec.
2020.
[0123] Outro aspecto para uma experiência de vídeo mais realista, além do HDR, é a dimensão de cor. A dimensão de cor é tipicamente definida pela gama de cores. A Figura 6 é um diagrama conceitual mostrando uma gama de cores SDR (triângulo 502 com base nas cores primárias BT.709), e a gama de cores mais ampla que para UHDTV (triângulo 504 com base nas cores primárias BT.2020). A Figura 6 também apresenta o chamado locus espectral (delimitado pela área em forma de língua 506), representando os limites das cores naturais. Conforme ilustrado pela Figura 6, passar de cores primárias BT.709 (triângulo 502) para BT.2020 (triângulo 504) visa fornecer serviços de UHDTV com cerca de 70% mais cores. D65 especifica um exemplo de cor branca para as especificações BT.709 e/ou BT.2020.
[0124] Exemplos de especificações de gama de cores para os espaços de cor DCI-P3, BT.709 e BT.2020 são mostrados na tabela 1. Tabela 1 – Parâmetros de Gama de Cores Parâmetros de Espaço de Cor RGB Espaço de Ponto Branco Cores Primárias Cor xxW yyW xxR yyR xxG yyG xxB yyB DCI-P3 0.314 0.351 0.680 0.320 0.265 0.690 0.150 0.060 ITU-R
0.3127 0.3290 0.64 0.33 0.30 0.60 0.15 0.06 BT.709 ITU-R
0.3127 0.3290 0.708 0.292 0.170 0.797 0.131 0.046 BT.2020
[0125] Como pode ser visto na Tabela 1, uma gama de cores pode ser definida pelos valores de X e Y de um ponto branco, e pelos valores de x e y das cores primárias
(por exemplo, vermelho (R), verde (G) e azul (B)). Os valores de x e y representam valores normalizados que são derivados da cromaticidade (X e Z) e do brilho (Y) das cores, como é definido pelo espaço de cor CIE 1931. O espaço de cor CIE 1931 define as ligações entre cores puras (por exemplo, em termos de comprimentos de onda) e como o olho humano percebe tais cores.
[0126] Os dados de vídeo HDR/WCG são tipicamente adquiridos e armazenados com uma precisão muito elevada por componente (mesmo ponto flutuante), com o formato de croma 4:4:4 e um espaço de cor muito amplo (por exemplo, CIE XYZ). Essa representação visa aplicações de alta precisão e é quase matematicamente sem perdas. No entanto, tal formato para armazenar dados de vídeo HDR/WCG pode incluir muitas redundâncias e pode não ser ideal para fins de compactação. Um formato de menor precisão com suposições baseadas em HVS pode ser utilizado para aplicações de vídeo de última geração.
[0127] Um exemplo de um processo de conversão de formato de dados de vídeo para fins de compactação inclui três processos principais, como mostrado na Figura 7. As técnicas da Figura 7 podem ser realizadas pelo dispositivo de origem 102 (ver Figura 1). Dados lineares RGB 410 podem ser dados de vídeo HDR/WCG e podem ser armazenados em uma representação de ponto flutuante. Dados lineares RGB 410 podem ser compactados usando uma função de transferência não linear (TF) 412 para compactação de faixa dinâmica. A função de transferência 412 pode compactar dados RGB lineares 410 usando qualquer número de funções de transferência não linear, por exemplo, a TF de Quantizador
Perceptual (PQ)conforme definido em SMPTE-2084. Em alguns exemplos, o processo de conversão de cores 414 converte os dados compactados em um espaço de cor mais compacto ou robusto (por exemplo, um espaço de cor YUV ou YCrCb) que é mais adequado para compactação por um codificador de vídeo híbrido. Esses dados são então quantizados usando uma unidade de quantização de representação flutuante para inteiro 416 para produzir dados HDR’ 418 convertidos. Os dados HDR’ 418 representam os dados de entrada para o codificador de vídeo 200. Os dados HDR’ 418 são o resultado da conversão dos dados de vídeo originais (por exemplo, dados RGB lineares 410) em um formato de dados de vídeo mais adequado para compactação. Neste exemplo, os dados HDR’ 418 estão em uma representação inteira. Os dados HDR’ 418 estão agora em um formato mais adequado para compactação por um codificador de vídeo híbrido (por exemplo, o codificador de vídeo 200 aplicando HEVC, VVC, ou outras técnicas de codificação de vídeo híbrido). A ordem dos processos descritos na Figura 7 é dada como exemplo e pode variar em outras aplicações. Por exemplo, a conversão de cores pode preceder o processo de TF. Além disso, o processamento adicional, por exemplo, subamostragem espacial, pode ser aplicado aos componentes de cor.
[0128] A conversão inversa no lado do decodificador é ilustrada na Figura 8. As técnicas da Figura 8 podem ser realizadas pelo dispositivo de destino 116 (ver Figura 1). O dispositivo de destino 116 pode obter dados HDR’ convertidos 420 através da decodificação de dados de vídeo usando um decodificador de vídeo híbrido (por exemplo, pelo decodificador de vídeo 300 aplicando
HEVC, VVC ou outras técnicas de codificação de vídeo híbrido). Os dados HDR’ 420 podem, então, ser quantizados inversamente pela unidade de quantização inversa 422. Em seguida, um processo de conversão de cores inverso 424 pode ser aplicado aos dados HDR’ quantizados inversamente. O processo de conversão de cor inverso 424 pode ser o inverso do processo de conversão de cor 414. Por exemplo, o processo de conversão de cor inverso 424 pode converter os dados HDR’ de um formato YCrCb de volta para um formato RGB. Em seguida, a função de transferência inversa 426 pode ser aplicada aos dados para adicionar de volta a faixa dinâmica que foi compactada pela função de transferência 412 para recriar os dados RGB lineares 428.
[0129] As técnicas descritas na Figura 7 serão agora discutidas em mais detalhes. Em geral, o dispositivo de destino 116 pode aplicar uma função de transferência aos dados (por exemplo, dados de vídeo HDR/WCG) para compactar a faixa dinâmica dos dados de modo que os erros devido à quantização sejam perceptualmente uniformes (aproximadamente) em toda a faixa de valores de luminância. Essa compactação permite que os dados sejam representados com menos bits. Em um exemplo, a função de transferência pode ser uma função não linear unidimensional (1D) e pode refletir o inverso de uma função de transferência eletro- óptica (EOTF) da exibição de usuário final, por exemplo, conforme especificado para SDR em Rec. 709. Em outro exemplo, a função de transferência pode aproximar a percepção de HVS às mudanças de brilho. Um exemplo de tal função de transferência é a função de transferência PQ especificada em SMPTE-2084 (ST2084) para HDR. O processo inverso da OETF é o EOTF (função de transferência eletro- óptica), que mapeia os níveis de código de volta para a luminância. A Figura 9 mostra vários exemplos de funções de transferência não linear 510 usadas como EOTFs. As funções de transferência também podem ser aplicadas a cada componente R, G e B separadamente.
[0130] A especificação de ST2084 definiu a aplicação de EOTF da seguinte forma. A TF é aplicada a valores R, G, B lineares normalizados, o que resulta em representação não linear de R’G’B’. ST2084 define normalização por NORM=10000, que é associado com um brilho de pico de 100OOnits (cd/m2). o R’ = PQ_TF(max(0, min(R/NORM,1)) ) o G’ = PQ_TF(max(0, min(G/NORM,1)) ) (1) o B’ = PQ_TF(max(0, min(B/NORM,1)) ) 𝑐𝑐1 +𝑐𝑐2 𝐿𝐿𝑚𝑚1 𝑚𝑚2 com PQ_TF(𝐿𝐿) = � � 1+𝑐𝑐3 𝐿𝐿𝑚𝑚1 2610 1 𝑚𝑚1 = × = 0.1593017578125 4096 4 2523 𝑚𝑚2 = × 128 = 78.84375 4096 3424 𝑐𝑐1 = 𝑐𝑐3 − 𝑐𝑐2 + 1 = = 0.8359375 4096 2413 𝑐𝑐2 = × 32 = 18.8515625 4096 2392 𝑐𝑐3 = × 32 = 18.6875 4096
[0131] Com valores de entrada (por exemplo, valor de cor linear) normalizados para a faixa 0..1 e valores de saída normalizados (por exemplo, valor de cor não linear), PQ EOTF 512 é visualizada na Figura 10. Como visto da curva
514, 1 por cento (iluminação baixa) da faixa dinâmica do sinal de entrada é convertido em 50% da faixa dinâmica do sinal de saída.
[0132] Normalmente, uma EOTF é definida como uma função com uma precisão de ponto flutuante, portanto, nenhum erro é introduzido em um sinal com esta não linearidade se a TF inversa (denominada OETF) for aplicada. A TF inversa (OETF) especificada em ST2084 é definida como função inversePQ: o R = 10000*inversePQ_TF(R’) o G = 10000*inversePQ_TF(G’) (2) o B = 10000*inversePQ_TF(B’) 1� 1 𝑚𝑚1 max��𝑁𝑁 �𝑚𝑚2 −𝑐𝑐1 �,0� com inversePQ_TF(𝑁𝑁) = � 1 � 𝑐𝑐2 −𝑐𝑐3 𝑁𝑁 �𝑚𝑚2 2610 1 𝑚𝑚1 = × = 0.1593017578125 4096 4 2523 𝑚𝑚2 = × 128 = 78.84375 4096 3424 𝑐𝑐1 = 𝑐𝑐3 − 𝑐𝑐2 + 1 = = 0.8359375 4096 2413 𝑐𝑐2 = × 32 = 18.8515625 4096 2392 𝑐𝑐3 = × 32 = 18.6875 4096
[0133] Com precisão de ponto flutuante, aplicações sequenciais de EOTF e OETF fornecem uma reconstrução perfeita sem erros. No entanto, essa representação não é ideal para o serviços de radiodifusão ou fluxo contínuo. Representação mais compacta com precisão de bit fixo de dados R’G’B’ não lineares é descrita nas seções a seguir. Note que EOTF e OETF são um assunto de pesquisa muito ativa atualmente, e a TF utilizada em alguns sistemas de codificação de vídeo HDR pode ser diferente de ST2084. As técnicas desta divulgação podem ser aplicáveis para uso com uma TF ou uma TF inversa.
[0134] No contexto desta divulgação, os termos “valor de sinal” ou “valor de cor” podem ser usado para descrever um nível de luminância correspondente ao valor de um componente de cor específico (como R, G, B ou Y) para um elemento de imagem. O valor de sinal é tipicamente representativo de um nível de luz linear (valor de luminância). Os termos “nível de código” ou “valor de código digital” podem se referir a uma representação digital de um valor de sinal de imagem. Normalmente, essa representação digital é representativa de um valor de sinal não linear. Uma EOTF representa a relação entre os valores de sinal não lineares fornecido a um dispositivo de exibição (por exemplo, dispositivo de exibição 32 da Figura 1) e os valores de cor lineares produzidos pelo dispositivo de exibição.
[0135] Dados RGB são normalmente utilizados como espaço de cor de entrada, uma vez que RGB é o tipo de dados que são tipicamente produzidos por sensores de captura de imagem. No entanto, o espaço de cor RGB tem elevada redundância dentre seus componentes e não é ideal para representação compacta. Para obter uma representação mais compacta e mais robusta, os componentes RGB são tipicamente convertidos (por exemplo, uma transformada de cor é realizada) para um espaço de cor que é mais não correlacionado e mais adequado para compactação, por exemplo, YCbCr. Um espaço de cor YCbCr separa o brilho na forma de luminância (canal de luma Y) e informações de cor de croma (canais de croma Cr e Cb) em componentes diferentes e menos correlacionados. Nesse contexto, uma representação robusta pode se referir a um espaço de cor apresentando níveis mais elevados de resiliência a erros quando compactado em uma taxa de bits restrita.
[0136] Para sistemas de codificação de vídeo modernos, YCbCr é um espaço de cor normalmente usado, conforme especificado em ITU-R BT.709 ou ITU-R BT.709. O espaço de cor YCbCr no padrão BT.709 especifica o seguinte processo de conversão de R’G’B’ para Y’CbCr (representação de luminância não constante): o Y’ = 0.2126 * R’ + 0.7152 * G’ + 0.0722 * B’ B′ −Y′ o Cb = 1.8556 (3) R′ −Y′ o Cr = 1.5748
[0137] O acima também pode ser implementado usando a seguinte conversão aproximada que evita a divisão para os componentes Cb e Cr: o Y’ = 0.212600 * R’ + 0.715200 * G’ + 0.072200 * B’ o Cb = -0.114572 * R’ - 0.385428 * G’ + 0.500000 * B’ (4) o Cr = 0.500000 * R’ - 0.454153 * G’ - 0.045847 * B’
[0138] O padrão ITU-R BT.2020 especifica o seguinte processo de conversão de R’G’B’ para Y’CbCr (representação de luminância não constante): o Y’ = 0.2627 * R’ + 0.6780 * G’ + 0.0593 * B’ B′ −Y′ o Cb = 1.8814 (5) R′ −Y′ o Cr = 1.4746
[0139] O acima também pode ser implementado usando a seguinte conversão aproximada que evita a divisão para os componentes Cb e Cr: o Y’ = 0.262700 * R’ + 0.678000 * G’ + 0.059300 * B’ o Cb = -0.139630 * R’ - 0.360370 * G’ + 0.500000 * B’ (6) o Cr = 0.500000 * R’ - 0.459786 * G’ - 0.040214 * B’
[0140] Deve-se notar que ambos os espaços de cores permanecem normalizados, portanto, para os valores de entrada normalizados na faixa 0...1, os valores resultantes podem ser mapeados para a faixa 0...1. Geralmente, as transformadas de cor implementadas com precisão de ponto flutuante fornecem reconstrução perfeita, portanto, esse processo é sem perdas.
[0141] Os estágios de processamento descritos acima são tipicamente implementados em representação de precisão de ponto flutuante e, portanto, podem ser considerados sem perdas. No entanto, esse tipo de precisão pode ser considerada redundante e cara para a maioria das aplicações de eletrônica de consumo. Para tais serviços, os dados de entrada em um espaço de cor alvo são convertidos em uma precisão de ponto fixo de profundidade de bits alvo. Certos estudos mostram que a precisão de 10-12 bits em combinação com PQ TF é suficiente para fornecer dados HDR de 16 f-stops com distorção abaixo da Diferença Quase Perceptível. Neste exemplo, a Diferença Quase Perceptível é a quantidade de distorção que deve ser alterada para ser visualmente perceptível para uma determinada porcentagem de espectadores (por exemplo, 50 por cento). Dados representados com precisão de 10 bits ainda podem ser codificados com a maioria das soluções de codificação de vídeo de última geração. Esse processo de conversão inclui quantização de sinal e é um elemento de codificação com perdas e é uma fonte de imprecisão introduzida nos dados convertidos.
[0142] Um exemplo de tal quantização aplicada a palavras de código em um espaço de cor alvo (o espaço de cor YCbCr neste exemplo) é mostrado abaixo. Valores de entrada YCbCr representados em precisão de ponto flutuante são convertidos em um sinal de profundidade de bit fixo (BitDepthY para valor Y e BitDepthC para valores de croma (Cb, Cr)).
o DY′ = Clip1Y �Round ��1 ≪ (BitDepthY − 8)� ∗ (219 ∗ Y′ + 16)�� o DCb = Clip1C �Round ��1 ≪ (BitDepthC − 8)� ∗ (224 ∗ Cb + 128)�� (7) o DCr = Clip1C �Round ��1 ≪ (BitDepthC − 8)� ∗ (224 ∗ Cr + 128)�� com Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 ) Sign ( x ) = -1 if x < 0, 0 if x=0, 1 if x > 0 Floor( x ) o número inteiro mais alto menor ou igual a x Abs( x ) = x if x>=0, -x if x<0 Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x ) Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x ) Clip3( x,y,z ) = x if z<x, y if z>y, z ao contrário
[0143] Foi proposto um processo DRA em “Dynamic Range Adjustment SEI to enable High Dynamic Range vídeo coding with Backward-Compatible Capability”, D. Rusanovskyy, A.K. Ramasubramonian, D. Bugdayci, S. Lee, J. Sole, M. Karczewicz, documento VCEG COM16-C 1027-E, set.
2015. Os autores propuseram implementar DRA como uma função linear por partes f(x) que é definida para um grupo de partições de faixa dinâmica não sobrepostas (faixas) {Ri} de valor de entrada x, em que i é um índice da faixa com faixa de 0 a N-1, inclusive, e em que N é o número total de faixas {Ri} utilizado para definir a função DRA. Supondo que as faixas do DRA sejam definidas por valor de x mínimo e máximo que pertence à faixa Ri, por exemplo, [xi, xi+1 — 1], em que Xi e xi+1 denotam o valor mínimo das faixas Ri e Ri+1, respectivamente. Aplicado ao componente de cor de Y (luma) dos dados de vídeo, a função DRA Sy é definida através de uma escala Sy,i e deslocamento Oy,i, que são aplicados a todo x ε [xi, xi+1 — 1], assim Sy = {Sy,i, Oy,i}.
[0144] Com isso, para qualquer Ri, e todo x ε [xi, xi+1 — 1], o valor de saída X é calculado da seguinte forma: 𝑋𝑋 = 𝑆𝑆𝑦𝑦,𝑖𝑖 ∗ �𝑥𝑥 − 𝑂𝑂𝑦𝑦,𝑖𝑖 � (8)
[0145] Para o processo de mapeamento de DRA inverso para o componente de luma Y conduzido no decodificador de vídeo 300, a função de DRA Sy é definida pelo inverso da escala Sy,i e valores de deslocamento Oy,i que são aplicados a cada 𝑋𝑋 ∈ [𝑋𝑋𝑖𝑖 , 𝑋𝑋𝑖𝑖+1 − 1] com isso, para qualquer Ri, e todo 𝑋𝑋 ∈ [𝑋𝑋𝑖𝑖 , 𝑋𝑋𝑖𝑖+1 − 1], o valor reconstruído x é calculado da seguinte forma: 𝑥𝑥 = 𝑋𝑋/𝑆𝑆𝑦𝑦,𝑖𝑖 + 𝑂𝑂𝑦𝑦,𝑖𝑖 (9)
[0146] O processo de mapeamento de DRA direto para componentes de croma Cb e Cr pode ser definido como segue. O exemplo a seguir é dado com o termo “u” denotando a amostra de um componente de cor Cb que pertence à faixa Ri, 𝑢𝑢 ∈ [𝑢𝑢𝑖𝑖 , 𝑢𝑢𝑖𝑖+1 − 1], assim 𝑆𝑆𝑢𝑢 = {{𝑆𝑆𝑢𝑢,𝑖𝑖 , 𝑂𝑂𝑢𝑢,𝑖𝑖 }: 𝑈𝑈 = 𝑆𝑆𝑢𝑢,𝑖𝑖 ∗ �𝑢𝑢 − 𝑂𝑂𝑦𝑦,𝑖𝑖 � + 𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂 (10) em que Offset é igual a 2(bitdepth-1), denota o deslocamento de sinal Cb, Cr bipolar.
[0147] O processo de mapeamento de DRA inverso realizado pelo decodificador de vídeo 300 para componentes de croma Cb e Cr pode ser definido como segue. Exemplo é fornecido com o termo U denotando a amostra de componente de cor Cb remapeado que pertence à faixa Ri, 𝑈𝑈 ∈ [𝑈𝑈𝑖𝑖 , 𝑈𝑈𝑖𝑖+1 − 1]: 𝑢𝑢 = (𝑈𝑈 − 𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂)/𝑆𝑆𝑢𝑢,𝑖𝑖 + 𝑂𝑂𝑦𝑦,𝑖𝑖 (11) em que Offset é igual a 2(bitdepth-1), denota o deslocamento de sinal Cb, Cr bipolar.
[0148] A escala de croma controlada por luma (LCS) foi proposta em JCTVC-W0101, “HDR CE2: Report on CE2.a-1 LCS”, A.K. Ramasubramonian, J. Sole, D. Rusanovskyy, D. Bugdayci, M. Karczewicz. JCTVC-W0101 descreveu técnicas para ajustar as informações de croma, por exemplo, Cb e Cr, explorando as informações de brilho (por exemplo, luma) associadas à amostra de croma processada. Similarmente à abordagem de DRA do documento VCEG COM16-C 1027-E, JCTVC-W0101 propôs aplicar em uma amostra de croma um fator de escala Su para Cb e Sv,i para Cr. No entanto, em vez de definir uma função de DRA como uma função linear por partes Su={Su,i, Ou,i} para um conjunto de faixas {Ri} acessível por valor de croma u ou v, como nas Equações (3) e (4), a abordagem de LCS propôs utilizar um valor de luma Y para derivar um fator de escala para amostras de croma. Com isso, o mapeamento de LCS direta da amostra croma u (ou v) é conduzido como: 𝑈𝑈 = 𝑆𝑆𝑢𝑢,𝑖𝑖 (𝑌𝑌) ∗ (𝑢𝑢 − 𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂) + 𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂 (12)
[0149] O processo de LCS inversa conduzido no lado de decodificador é definido como a seguir: 𝑢𝑢 = (𝑈𝑈 − 𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂)/𝑆𝑆𝑢𝑢,𝑖𝑖 (𝑌𝑌) + 𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂𝑂 (13)
[0150] Em mais detalhes, para um determinado pixel localizado em (x, y), amostras de croma Cb(x, y) ou
Cr(x, y) são escalados com um fator derivado de sua função LCS Scb (ou Scr) acessado por seu valor de luma Y’(x, y).
[0151] Na LCS direta para amostras de croma, os valores de Cb (ou Cr) e seu valor de luma associado Y’ são tomados como uma entrada à função de escala de croma Scb (ou Scr) e Cb ou Cr são convertidos em Cb’ e Cr’, como mostrado na Equação (14). No lado do decodificador, a LCS inversa é aplicada, e Cb’ ou Cr’ reconstruído são convertidos em Cb, ou Cr como mostrado na Equação (15). 𝐶𝐶𝐶𝐶 ′ (𝑥𝑥, 𝑦𝑦) = 𝑆𝑆𝐶𝐶𝐶𝐶 �𝑌𝑌 ′ (𝑥𝑥, 𝑦𝑦)� ∗ 𝐶𝐶𝐶𝐶(𝑥𝑥, 𝑦𝑦), 𝐶𝐶𝐶𝐶 ′ (𝑥𝑥, 𝑦𝑦) = 𝑆𝑆𝐶𝐶𝐶𝐶 �𝑌𝑌 ′ (𝑥𝑥, 𝑦𝑦)� ∗ 𝐶𝐶𝐶𝐶(𝑥𝑥, 𝑦𝑦) (14) 𝐶𝐶𝑏𝑏 ′ (𝑥𝑥, 𝑦𝑦) 𝐶𝐶𝐶𝐶(𝑥𝑥, 𝑦𝑦) = 𝑆𝑆𝐶𝐶𝐶𝐶 �𝑌𝑌 ′ (𝑥𝑥, 𝑦𝑦)� 𝐶𝐶𝑟𝑟 ′ (𝑥𝑥,𝑦𝑦) 𝐶𝐶𝐶𝐶(𝑥𝑥, 𝑦𝑦) = 𝑆𝑆𝐶𝐶𝐶𝐶 (𝑌𝑌 ′ (𝑥𝑥,𝑦𝑦)) (15)
[0152] A Figura 11 mostra um exemplo de funções de LCS. Com a função de LCS no exemplo na Figura 11, os componentes de croma de pixels com menores valores de luma são multiplicados com menores fatores de escala.
[0153] A relação entre escala de amostra de DRA e parâmetros de quantização (QPs) de um codec de vídeo será agora discutida. Para ajustar a taxa de compactação nos codificadores de vídeo (por exemplo, codificador de vídeo 200), os esquemas de codificação de vídeo baseados em transformada de bloco, tais como HEVC, utilizam um quantizador escalar, que é aplicado a um bloco de coeficientes de transformada. Por exemplo: Xq = X/scalerQP em que Xq é um valor de código quantizado do coeficiente de transformada X produzido pela aplicação de contador de escala scalerQP derivado do QP. Na maioria dos codecs, o valor de código quantizado seria aproximado a um valor inteiro (por exemplo, por arredondamento). Em alguns codecs, a quantização pode ser uma função diferente que depende não apenas do QP mas também de outros parâmetros do codec.
[0154] O valor de contador de escala scalerQP é controlado com o QP. A relação entre o QP e o quantizador escalar é definida da seguinte forma, em que k é uma constante conhecida: scalerQP= k*2^(QP/6) (16)
[0155] A função inversa define a relação entre o quantizador escalar aplicado ao coeficiente de transformada e o QP de HEVC, da seguinte forma: QP = ln(scalerQP/k)*6 / ln(2) (17)
[0156] Respectivamente, a mudança aditiva no valor de QP, por exemplo, deltaQP, resultaria em uma mudança multiplicativa no valor de scalerQP aplicado aos coeficientes de transformada. Um processo de DRA é efetivamente aplicar valor de scaleDRA aos valores de amostra de pixel, e levando em consideração as propriedades de transformada, podem ser combinados com valores de scalerQP como segue: Xq = T (scaleDRA*x)/scaleQP em que Xq são coeficientes de transformada quantizados produzidos pela transformada T dos valores de amostra x escalonados e escala com scaleQP aplicada no domínio de transformada. Assim, a aplicação do multiplicador scaleDRA no domínio do pixel resulta em mudança efetiva do quantizador de contador de escala scaleQP, que é aplicado no domínio de transformada. Isso, por sua vez, pode ser interpretado na mudança aditiva do valor de QP aplicado ao bloco de dados processado atual: dQP = log2(scaleDRA)*6; (18) em que dQP é um deslocamento de QP aproximado introduzido por HEVC ao implantar DRA nos dados de entrada.
[0157] A dependência de QP de croma no valor de QP de luma será agora discutida. Alguns projetos de codificação de vídeo de última geração, tais como HEVC e padrões de codificação de vídeo mais recentes, podem utilizar uma dependência predefinida entre valores de QP de luma e croma que são efetivamente aplicados para processar bloco de croma bloco Cb e/ou Cr atualmente codificado. Essa dependência pode ser utilizada para alcançar uma alocação de taxa de bits ideal entre componentes de luma e croma.
[0158] Um exemplo de tal dependência é representado pela Tabela 8-10 da especificação HEVC, em que valores de QP aplicados para decodificar amostras de croma são derivados de valores de QP utilizados para decodificar amostras de luma. As seções relevantes de HEVC em que o valor de QP de croma é derivado com base no valor de QP da amostra de luma correspondente (por exemplo, o valor de QP aplicado ao bloco/TU da amostra de luma correspondente), deslocamentos de QP de croma, e Tabela 8-10 da especificação HEVC são reproduzidos abaixo:
[0159] Quando CromaArrayType não é igual a 0, o seguinte se aplica: - As variáveis qPCb e qPCr são derivadas como segue: - Se tu_residual_act_flag[ xTbY ][ yTbY ] for igual a 0, o seguinte se aplica: qPiCb = Clip3( -QpBdOffsetc, 57, Qpy + pps_cb_qp_offset + slice_cb_qp_offset + CuQpOffsetCb ) (8- 287) qPiCr = Clip3( -QpBdOffsetc, 57, Qpy + pps_cr_qp_offset + slice_cr_qp_offset + CuQpOffsetCr ) (8- 288) - Ao contrário, (tu_residual_act_flag[ xTbY ][ yTbY ] é igual a 1), o seguinte se aplica: qPiCb = Clip3( -QpBdOffsetC, 57, QpY + PpsActQpOffsetCb + slice_act_cb_qp_offset + CuQpOffsetCb ) (8-289) qPiCr = Clip3( -QpBdOffsetC, 57, QpY + PpsActQpOffsetCr + slice_act_cr_qp_offset + CuQpOffsetCr ) (8-290) - Se CromaArrayType for igual a 1, as variáveis qPCb e qPCr são iguais ao valor de Qpc como especificado na Tabela 8-10 com base no índice qPi igual a qPiCb e qPiCr, respectivamente. - Ao contrário, as variáveis qPCb e qPCr são iguais a Min( qPi, 51 ), com base no índice qPi igual a qPiCb e qPiCr, respectivamente. - Os parâmetros de quantização de croma para os componentes Cb e Cr, Qp’Cb e Qp’Cr, são derivados como segue: Qp′Cb = qPCb + QpBdOffsetC (8-291) Qp′Cr = qPCr + QpBdOffsetC (8-292)
Tabela 8-10 - Especificação de Qpc como uma função de qPi para CromaArrayType 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
[0160] A derivação de um fator de escala croma para DRA será agora discutida. Em sistemas de codificação de vídeo empregando quantização escalar uniforme no domínio de transformada e escala de domínio de pixel com DRA, a derivação do valor de escala de DRA aplicada a amostras de croma (Sx) pode ser dependente do seguinte: - SY: Valor de escala de luma da amostra de luma associada - SCX: Escala derivada da gama do conteúdo, em que CX significa Cb ou Cr conforme aplicável - Scorr: termo de escala de correção com base para contabilização de incompatibilidade na codificação de transformada e escala de DRA, por exemplo, para compensar as dependências introduzidas pela Tabela 8-10 do HEVC Sx = fun(SY, SCX, Scorr). Um exemplo é uma função separável definida da seguinte maneira: SX = f1(SY)*f2(SCX)*f3 (Scorr).
[0161] A cascata de QP em estruturas de predição hierárquicas será agora discutida. As técnicas de compactação de vídeo geralmente empregam estruturas de predição hierárquicas para um grupo de imagens. Por exemplo, ver “Hierarchical B pictures”, JVT-P014, Poznan, PL, julho de 2005. As imagens podem ser classificadas em camadas hierárquicas, de forma que uma imagem só pode ser predita a partir de outras imagens que pertencem à mesma camada hierárquica ou abaixo.
[0162] Embora tais configurações possam ser decididas pelo codificador, algumas configurações particulares também podem ser exigidas por certas especificações/padrões. Algumas vantagens das estruturas de predição hierárquicas incluem camadas escaláveis temporais (por exemplo, determinado subconjunto das imagens hierárquicas pode ser decodificável para obter o vídeo a uma taxa de quadros inferior à de toda a sequência sem faltar imagens de referência) e eficiência de codificação. Imagens chave (essas imagens são usadas direta ou indiretamente na referência de várias imagens) são consideradas inferiores na hierarquia. Normalmente, quanto mais alta a camada hierárquica à qual uma imagem picB pertence, menos numerosas as imagens que usam picB como referência (direta ou indiretamente). Referência indireta é usada para indicar uma referência iterativa (por exemplo, se picC faz referência direta a picB e picD faz referência direta a picC, então picD faz referência indireta a picB; se picF faz referência indireta a picE e picE faz referência indireta a picB, então picF indiretamente faz referência a picB).
[0163] O parâmetro de quantização usado para quantizar os coeficientes de imagens em cada camada também é escolhido com base na maximização da eficiência de codificação. Embora JVT-P014 sugira alguns métodos para escolher os valores de QP, os codificadores podem empregar diferentes técnicas, e os valores de QP usados são sinalizados no fluxo de bits. As imagens chave, que estão em uma camada hierárquica inferior, são normalmente codificadas com valores de QPs inferiores (por exemplo, resultando em uma qualidade visual superior) do que imagens em uma camada hierárquica superior. Um exemplo de como as imagens de um grupo de imagens (GOP) tamanho de 16 são codificadas é dado abaixo com respeito a um número de contagem de ordem de imagem (POC) e uma referência QP de
30. Tabela 2: Exemplo de cascata de QP; valores de QP de imagem inferiores na hierarquia são inferiores a QP de imagens superiores na hierarquia. POC 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Camada 0 5 4 5 3 5 4 5 2 5 4 5 3 5 4 5 1 Hier.
QP 27 36 35 36 34 36 35 36 31 36 35 36 34 36 35 36 31
[0164] Em comparação com conteúdo de SDR, observou-se que artefatos de croma são mais visíveis no conteúdo de HDR ao codificar com técnicas que são semelhantes à codificação de SDR. Por exemplo, mais artefatos de croma podem ser visíveis em regiões claras da imagem. A sinalização de um deslocamento de QP de croma que é uma função do parâmetro de QP de base para componentes de luma é uma forma de reduzir o impacto dessas técnicas.
[0165] Outro método é escalar as amostras de croma (por exemplo, usando um processo de DRA) para refletir o termo de deslocamento de QP de croma, melhorando assim potencialmente a codificação geral das amostras de croma. No entanto, a cascata de QP (codificando diferentes imagens do vídeo com QP diferente) afeta o deslocamento de
QP de croma que deve ser sinalizado para as imagens. Usar um único valor de deslocamento de QP de croma para todas as imagens em uma sequência resulta em menos deslocamentos de QP de croma correspondentes sendo aplicados a diferentes imagens nas sequências, afetando assim a experiência de visualização. A sinalização de deslocamento de QP de croma para uma imagem resultaria em bits adicionais a serem sinalizados, afetando assim o desempenho de codificação. Se escala de DRA de croma for aplicada a cada imagem com base no QP associado com a imagem, então os parâmetros de DRA de croma são sinalizados para cada imagem, o que também resulta em mais bits.
[0166] Esta divulgação descreve várias técnicas que podem melhorar ajuste de faixa dinâmica em múltiplas imagens e a integração de ajuste de faixa dinâmica com codecs de vídeo com base em transformada híbridos, incluindo sinalização. Deve-se compreender que uma ou mais dessas técnicas podem ser usadas independentemente ou em combinação com outras técnicas.
[0167] Em um primeiro exemplo da divulgação, o codificador de vídeo 200 e/ou decodificador de vídeo 300 podem usar como entrada um primeiro valor de QP (por exemplo, um valor de QP de imagem ou de luma) e um ou mais conjuntos de parâmetros (por exemplo, um primeiro conjunto de parâmetros e um segundo conjunto de parâmetros) para determinar um valor de deslocamento de QP de croma intermediário usado para determinar um valor de QP de croma. Um valor de QP de luma ou valor de QP de imagem pode ser um valor de QP para toda uma imagem de dados de vídeo e pode ser usado para determinar outros valores de QP para as imagens (por exemplo, valores de QP de nível de bloco). O codificador de vídeo 200 e/ou decodificador de vídeo 300 podem derivar um primeiro valor/variável (por exemplo, um valor de deslocamento de QP de croma intermediário) usando o primeiro valor de QP e um primeiro subconjunto do primeiro conjunto de parâmetros e/ou todos do primeiro conjunto de parâmetros.
Como será explicado em mais detalhes abaixo, o primeiro conjunto de parâmetros pode incluir características dos dados de vídeo.
Características de vídeo podem incluir um contêiner de cor usado para armazenar os dados de vídeo (por exemplo, BT.709, BT.2020 etc.), um formato de subamostragem de croma (por exemplo, 4:4:4, 4:2:2, 4:2:0), uma gama de cores dos dados de vídeo, um espaço de cor (por exemplo, RGB, YCbCr, YUV, ICtCp etc.), e/ou um componente de cor.
O codificador de vídeo 200 e o decodificador de vídeo 300 podem usar as características de vídeo para determinar uma tabela de pesquisa dentre múltiplas tabelas de pesquisa que é usada para determinar o valor de deslocamento de QP de croma intermediário.
Em outro exemplo, as características de vídeo podem ser usadas para determinar uma função dentre uma pluralidade de funções para determinar os valores de deslocamento de QP de croma intermediários.
Dessa forma, as funções e/ou tabelas de pesquisa usadas para determinar valores de deslocamento de QP de croma intermediários podem ser adaptadas para componentes de cor específicos (por exemplo, componentes de luma ou componentes de croma), podem ser adaptadas para gamas de cores específicas (por exemplo, gamas de cores HDR ou SDR específicas), podem ser adaptadas para contêineres de cor específicos (por exemplo,
BT.709, BT.2020 etc.), e/ou podem ser adaptadas para espaços de cor específicos (por exemplo, RGB, YUV, YCbCr etc.). Um exemplo de utilização de um primeiro conjunto de parâmetros para determinar uma tabela de pesquisa é descrito abaixo e mostrado na Figura 12.
[0168] O codificador de vídeo 200 e/ou decodificador de vídeo 300 podem derivar um segundo valor/variável usando o primeiro valor/variável e um segundo subconjunto do segundo conjunto de parâmetros e/ou todos do segundo conjunto de parâmetros. Em alguns exemplos, o segundo valor/variável pode ser o valor de QP de croma ou uma entrada em outra tabela de pesquisa que é usada determinar o valor de QP de croma. Em vários exemplos discutidos abaixo, o primeiro conjunto de parâmetros e o segundo conjunto de parâmetros podem incluir valores de QP e valores de deslocamento de QP. Em outros exemplos, o primeiro conjunto de parâmetros e o segundo conjunto de parâmetros podem ser parâmetros de DRA. No entanto, deve-se compreender que outros tipos de parâmetros podem ser usados em conjunto com as técnicas desta divulgação. O primeiro valor/variável e o segundo valor/variável podem ser considerados valores/variáveis intermediários que podem ser usados para determinar um valor de saída particular (por exemplo, um valor de QP de saída e/ou parâmetros de DRA).
[0169] Em um exemplo da divulgação, o codificador de vídeo 200 e/ou decodificador de vídeo 300 podem derivar um valor de QP de saída do primeiro e segundo valores/variáveis e aplicar o valor de QP de saída para amostras codificadas/decodificadas no nível de bloco no domínio de transformada. Em outros exemplos, o codificador de vídeo 200 e/ou decodificador de vídeo 300 podem ser configurados para converter o valor de QP de saída em um valor de escala associado e aplicar o valor de escala associado a amostras codificadas/decodificadas no nível de amostra.
[0170] Em outro exemplo, o codificador de vídeo 200 e/ou decodificador de vídeo 300 podem usar diferentes funções de derivação para a derivação dos referidos primeiro e segundo valores/variáveis. Como será explicado no Exemplo 1 abaixo, uma equação paramétrica pode ser usada como uma primeira função de derivação para determinar um valor de deslocamento de QP de croma intermediário (por exemplo, chQPOffset2(qp) no Exemplo 1)) abaixo. O valor de deslocamento de QP de croma intermediário pode, então, ser usado para determinar um valor de QP de croma como descrito abaixo.
[0171] Em outro exemplo, as funções de derivação podem ser definidas através de uma tabela ou tabelas de pesquisa. Tabelas de pesquisa exemplificativas são descritas abaixo com referência ao Exemplo 1. Em outros exemplos, a função de derivação pode ser definida através de uma definição de função paramétrica, por exemplo, uma função linear ou não linear. Em um exemplo, as tabelas de pesquisa podem incluir as saídas quantizadas de uma ou mais funções paramétricas.
[0172] Em outros exemplos, o codificador de vídeo 200 e/ou decodificador de vídeo 300 podem derivar um valor de QP de saída (por exemplo, um valor de QP de croma) como uma soma do primeiro e segundo valores (outQP = valor1 + valor2). Em outros exemplos, o codificador de vídeo 200 e/ou decodificador de vídeo 300 podem derivar o valor de QP de saída através de multiplicação do primeiro e segundo valores.
[0173] Em alguns exemplos, o primeira função de derivação (por exemplo, uma função paramétrica ou tabela de pesquisa para derivar um valor de deslocamento de QP de croma intermediário) e/ou a segunda função de derivação (por exemplo, uma função paramétrica ou tabela de pesquisa para derivar um QP de croma do valor de deslocamento de QP de croma intermediário) pode ser sinalizada ou identificada (por exemplo, dentre um conjunto de funções disponíveis) através de elementos de sintaxe do fluxo de bits. Exemplos da primeira função de derivação e da segunda função de derivação serão descritos abaixo no Exemplo 1. Em alguns exemplos, a identificação da função de derivação pode ser realizada no decodificador de vídeo 300.
[0174] Em outros exemplos, parâmetros de DRA (por exemplo, escalas e/ou deslocamentos de DRA usados para uma determinada amostra(s) para a qual um valor de PQ de saída está sendo derivado) podem ser usados como o conjunto de parâmetros para derivar o primeiro ou segundo valor. O codificador de vídeo 200 pode ser configurado para parâmetros de DRA gerais e de sinal em uma ou mais estruturas de sintaxe no fluxo de bits de vídeo codificado.
[0175] Em outros exemplos, o primeiro conjunto de parâmetros pode incluir um ou mais valores de QP de valores de deslocamento de QP. Por exemplo, um valor de QP delta de luma sinalizado no fluxo de bits, e um valor de deslocamento de QP de croma. Os Exemplos 1 e 2 abaixo incluem descriçõesde técnicas de como valores de QP e/ou valores de deslocamento de QP podem ser usados para determinar valores de deslocamento de QP de croma intermediários e/ou parâmetros de DRA.
[0176] Em outro exemplo, o segundo conjunto de parâmetros pode incluir um ou mais valores de QP de valores de deslocamento de QP. Por exemplo, um valor de QP delta de luma sinalizado no fluxo de bits, e um valor de deslocamento de QP de croma. Os Exemplos 1 e 2 abaixo incluem descrições de técnicas de como valores de QP e/ou valores de deslocamento de QP podem ser usado para determinar valores de QP de cromas e/ou parâmetros de DRA.
[0177] Em outros exemplos, um ou mais parâmetros no primeiro e segundo conjunto de parâmetros podem ser sinalizados no fluxo de bits ou derivados no decodificador de vídeo 300.
[0178] Em outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para definir baseQP como um parâmetro de QP de referência, definir 1QP1 como um primeiro parâmetro de deslocamento de QP de luma, definir 1QP2 como um segundo parâmetro de deslocamento de QP de luma, e definir cQP como um parâmetro de deslocamento de QP de croma. Neste exemplo, o primeiro conjunto de parâmetros inclui baseQP, 1QP1, 1QP2, e cQP, e o segundo conjunto de parâmetros inclui baseQP, 1QP2, cQP. O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para derivar o primeiro valor/variável (por exemplo, o valor de deslocamento de QP de croma intermediário) de baseQP, 1QP1, 1QP2 e cQP, e derivar a segunda variável (por exemplo, o valor de escala de DRA ou QP de croma) do primeiro valor/variável, baseQP,
1QP1, 1QP2 e cQP. Em um exemplo, o primeiro valor/variável x é derivado como fun1(baseQp + 1QP1 - 1QP2 - cQP) e o segundo valor/variável é derivado como fun2(baseQP + 1QP1 + x + 1QP2 +cQP), em que fun1( ) e fun2( ) representam a primeira e segunda funções de derivação. A variável 1QP1 pode representar um valor de QP hierárquico, enquanto 1QP2 pode representar valores de QP derivados de valores de escala de DRA de nível de bloco. Em outro exemplo, o valor de QP de entrada pode ser substituído por um valor de escala de entrada, ou um valor de QP de entrada pode ser derivado de um valor de escala de entrada. O valor de escala de entrada pode ser sinalizado no fluxo de bits ou predeterminado pelo codificador de vídeo 200 e/ou decodificador de vídeo 300.
[0179] Em outros exemplos da divulgação, o codificador de vídeo 200 pode ser configurado para sinalizar as uma ou mais tabelas de pesquisa (por exemplo, as tabelas de pesquisa descritas nos Exemplos 1-4 abaixo) no fluxo de bits.
[0180] Em outro exemplo, o codificador de vídeo 200 pode ser configurado para sinalizar, e o decodificador de vídeo 300 pode ser configurado para receber, um ou mais pares de valores de QP indicando os valores de QP para usar para codificar os dados de vídeo, em que cada par contém um valor de QP de saída e um valor de QP de entrada. Neste exemplo, um valor de QP de entrada pode ser o valor de QP de imagem, e o valor de QP de saída pode ser o valor de QP de croma.
[0181] Em outro exemplo, o codificador de vídeo 200 pode ser configurado para sinalizar, e decodificador de vídeo 300 pode ser configurado para receber, uma lista de valores de QP de saída e uma lista de valores de QP de entrada correspondentes. Por exemplo, a lista de valores de QP de entrada e valores de QP de saída pode ser na forma de uma tabela de pesquisa. Em alguns exemplos, a lista de valores de QP de saída pode ser predeterminada e, portanto, não sinalizada. Nesses casos, os valores de QP de entrada correspondentes à lista predeterminada de valores de saída são enviados.
[0182] Em outro exemplo, o codificador de vídeo 200 pode ser configurado para sinalizar, e o decodificador de vídeo 300 pode ser configurado para receber, um primeiro valor de QP (entrada ou saída). O codificador de vídeo 200 pode ser configurado para sinalizar, e o decodificador de vídeo 300 pode ser configurado para receber, um valor de delta indicando a diferença entre um segundo valor de QP (entrada ou saída) e o primeiro valor de QP. Em outros exemplos, uma tabela de entrada pode não ser sinalizada como pares/conjuntos/listas de valor de QP e uma relação entre os valores de QP de entrada e saída pode ser definida por uma função definida por parâmetros. Uma função exempplificativa é descrita abaixo no Exemplo 1. Os valores de parâmetros podem ser sinalizados.
[0183] O codificador de vídeo 200 pode ser configurado para sinalizar, e o decodificador de vídeo 300 pode ser configurado para receber, um ou mais índices no fluxo de bits para indicar/especificar uma tabela de pesquisa (ou conjunto de tabelas) a ser usada pelo decodificador de vídeo 300 para derivar os valores de QP de croma de saída.
[0184] O codificador de vídeo 200 pode ser configurado para sinalizar, e o decodificador de vídeo 300 pode ser configurado para receber, um ou mais índices no fluxo de bits para indicar/especificar uma tabela de pesquisa (ou conjunto de tabelas) a ser usado pelo decodificador de vídeo 300 para derivar os valores de escala de DRA de croma (ou valores de escala de DRA inversa de croma).
[0185] O decodificador de vídeo 300 pode ser configurado para derivar as tabelas de pesquisa de entrada a partir de métodos predeterminados ou usando os elementos de sintaxe sinalizados. O codificador de vídeo 200 e o decodificador de vídeo 300 podem usar a tabela de pesquisa de entrada para determinar um valor de deslocamento de QP de croma intermediário. O codificador de vídeo 200 e o decodificador de vídeo 300 podem então usar o valor de deslocamento de QP de croma intermediário, em conjunto com parâmetros, para determinar o valor de QP de croma. Uma tabela de entrada pode ser derivada de uma ou mais tabelas de QP sinalizadas para, predeterminadas por, ou derivadas pelo decodificador de vídeo 300. Quando nenhum valor de QP de saída é sinalizado ou especificado para um valor de QP de entrada, o valor de QP de entrada e o valor de QP de saída correspondente podem ser derivados por interpolação entre dois ou mais pares de valores de QP (ou seja, um valor de QP de entrada e seu valor de QP de saída associado), copiando os valores de um par de valores de QP próximos (por exemplo, o valor de QP de entrada mais próximo na tabela de pesquisa), ou por interpolação entre um valor de QP próximo e um par de valores de QP predefinidos (por exemplo, par de QP de 0,0).
[0186] Em alguns exemplos que usam uma tabela de pesquisa, o codificador de vídeo 200 e/ou o decodificador de vídeo 300 podem ser configurados para selecionar/determinar um valor de QP de entrada e obter um valor de QP de saída da tabela encontrando uma entrada correspondente para o valor de QP de entrada na tabela. O codificador de vídeo 200 e/ou o decodificador de vídeo 300 podem ser configurados para derivar o valor de QP de croma (por exemplo, o valor de QP de saída) para quantizar ou desquantizar os coeficientes de croma de um valor de saída (por exemplo, um valor de deslocamento de QP de croma intermediário do Exemplo 1). Quando uma tabela explícita não é construída no decodificador de vídeo 300, uma função predeterminada derivada dos um ou mais parâmetros sinalizados no fluxo de bits pode ser usada para derivar o valor de QP de croma usado para quantizar/desquantizar os coeficientes. Parâmetros exemplificativos são descritos abaixo no Exemplo 1.
[0187] Em alguns exemplos, quando um valor de QP de entrada e valor de QP de saída não são especificados na tabela, o valor de QP de entrada e os valores de QP de saída são derivados interpolando um conjunto diferente de pares de valores de QP (por exemplo, adjacente aos valores de QP de entrada). Em outros exemplos, esse valor de QP interpolado é arredondado para um valor inteiro utilizando um método predeterminado (por exemplo, arredondamento, funções de ceil (para cima) ou floor (para baixo)).
[0188] Em alguns exemplos, as funções ou tabelas que descrevem a relação entre valores de QP de entrada e saída podem ser definidas em representação de ponto flutuante.
[0189] Algumas das técnicas descritas acima podem ser aplicadas no codificador de vídeo 200 ou decodificador de vídeo 300, ou ambos. Embora muitas das técnicas divulgadas sejam para componentes de croma, as técnicas desta divulgação também podem ser aplicáveis para luma e para componentes em outros espaços de cores que podem ser usados para representar o vídeo.
[0190] Abaixo estão quatro técnicas exemplificativas detalhadas que usam uma ou mais das técnicas descritas acima. As técnicas exemplificativas descritas abaixo podem ser usadas para derivar valores de QP de croma e parâmetros de DRA para imagens de dados de vídeo. As técnicas descritas abaixo podem reduzir e/ou limitar artefatos de croma que podem resultar da codificação de dados de vídeo em HDR e/ou WCG. Conforme discutido acima, ao usar a codificação hierárquica, os valores de QP variam de quadro a quadro. Ao processar dados de vídeo em HDR/WCG utilizando ajuste de DRA, pode ser benéfico também variar os parâmetros de DRA (por exemplo, escala e deslocamento de DRA) de quadro para quadro. No entanto, a fim de reduzir a complexidade de implementação, algumas técnicas exemplificativas para ajuste de DRA mantêm os parâmetros de DRA fixos em toda uma sequência de vídeo (por exemplo, múltiplas imagens). Uma vez que existe alguma inter-relação entre parâmetros de DRA e valores de QP, esta divulgação propõe as seguintes técnicas para determinar valores de QP de croma quadro a quadro que atingem aproximadamente os mesmos resultados que variar os valores da escala de DRA de croma quadro a quadro. Exemplo 1
[0191] Em um exemplo da divulgação, o codificador de vídeo 200 e o decodificador de vídeo 300 podem armazenar e usar um conjunto de tabelas de pesquisa para determinar valores intermediários (por exemplo, valores de deslocamento de QP de croma intermediários) usados para determinar valores de QP de croma. Um conjunto de tabelas de pesquisa 550 pode ser definido, como mostrado na Figura 12, com a primeira linha indicando um valor de QP de entrada (por exemplo, um QP de imagem ou QP de luma) e cada linha subsequente correspondendo a uma tabela específica que provê um valor intermediário de saída (por exemplo, valores de deslocamento de QP de croma intermediários) dado o QP de entrada.
[0192] Cada uma das tabelas de pesquisa individuais nas tabelas de pesquisa 550 pode ser projetada para características de vídeo particulares. Por exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para determinar a tabela de pesquisa específica de tabelas de pesquisa 550 a serem usadas para uma imagem com base na gama de cores dos dados de vídeo e no componente de cor dos dados de vídeo aos quais a tabela deve ser aplicada. Por exemplo, a tabela de pesquisa Tab0 pode ser aplicada para amostras de luma, a tabela de pesquisa Tab1 pode ser aplicada para amostras Cb para conteúdo que tem uma gama de cores BT.709, a tabela de pesquisa Tab2 pode ser aplicada para amostras Cr para conteúdo que tem uma gama de cores BT.709, a tabela de pesquisa Tab3 pode ser aplicada para amostras Cb para conteúdo que tem uma gama de cores P3, e a tabela de pesquisa Tab4 pode ser aplicada para amostras Cr para conteúdo que tem uma gama de cores P3. ChTableQP() define a relação de QP de entrada e saída conforme definido pelas tabelas mostradas na Figura 12.
[0193] Em alguns exemplos, o codificador de vídeo 200 pode ser configurado para sinalizar um elemento de sintaxe que indica qual das tabelas das tabelas de pesquisa 550 deve ser usada para um ou mais componentes de cor. Esse elemento de sintaxe pode ser um índice para o conjunto de tabelas definido acima. Em alguns exemplos, as próprias tabelas de pesquisa podem ser sinalizadas no fluxo de bits.
[0194] Uma outra tabela 560, como mostrado na Figura 13, pode ser definida a fim de derivar o valor de QP a ser usado para codificar os coeficientes de croma. Ou seja, a saída das tabelas na Figura 12 pode ser usada como entrada para a tabela de pesquisa 560 na Figura 13. A saída da tabela de pesquisa 560 (TableQp(qp)) pode ser denominada um valor de deslocamento de QP de croma intermediário, que pode ser usado para determinar um valor de QP de croma, conforme descrito abaixo.
[0195] Definir uma função de deslocamento chQPOffset2() da seguinte forma: chQPOffset2(qp) = ChTableQP(qp) - qp Neste exemplo, chQPOffset2 é o valor de deslocamento de QP de croma intermediário e qp é a imagem qp. ChTableQp é uma tabela específica da pluralidade de tabelas de pesquisa mostradas na Figura 12. A tabela particular usada é com base em características dos dados de vídeo. Esse termo deslocamento de croma (por exemplo, valor de deslocamento de croma) é responsável pelas propriedades de gama e é tratado pelas tabelas de pesquisa de quantização 550 (por exemplo, Figura 12) armazenadas no codificador de vídeo 200 e decodificador de vídeo 300. Como será descrito abaixo, os valores de escala de DRA de croma apenas consideram os termos devido à escala de luma e o termo de correção (Scorr descrito abaixo) daí decorrente. Quando amostras de luma e croma são codificadas sem DRA, uma relação de QP entre codificação amostras de luma e croma é assumida. A Tabela 560 da Figura 13 é um exemplo da especificação de tal relação. Embora os valores de deslocamento de QP possam ser sinalizados para amostras de croma, o valor de QP final é determinado por essa relação, que é inteiramente uma função de QP/deslocamento de luma e QP/deslocamentos de croma. Quando valores de escala DRA são aplicados a luma e croma, os valores de escala são tipicamente determinados com base nas características dos dados de vídeo (sem compressão). A presença dessa relação de QP poderá alterar as características do sinal de forma não desejável com base na derivação de parâmetro de DRA. O termo de correção é aplicado aos valores de escala de croma para considerar essa relação de codificação de QP.
[0196] Em outros exemplos, em vez de usar uma de uma pluralidade de tabelas de pesquisa ChTableQP, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar uma função paramétrica com base em características dos dados de vídeo para determinar o valor de deslocamento de QP de croma intermediário. Por exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar a função f(x) f(x) = a1 * x + b1. O codificador de vídeo 200 e o decodificador de vídeo 300 ainda podem usar parâmetros de escala S_Cb e S_Cr para os termos de escala para Cb e Cr, respectivamente. O termo g(x) é o valor de deslocamento de QP de croma intermediário, em que g(x) = S_C * f(x) e g(x) = S_C * f(x), em que S_C é S_Cb e S_Cr para Cb e Cr, respectivamente.
[0197] O termo g(x) é um termo de deslocamento. Os valores de tabela (por exemplo, Tab1 a Tab4 na Figura 12) podem ser derivados como segue, com x substituído pelo valor de QP de imagem: ChTableQp (x) = TableQp ( x + g(x) ) para cada valor.
[0198] Para Tab 1 a Tab 4, a1 = -0,46, b1 = 9,26, S_C = 1,14 para Tab 1, S_C = 1,79 para Tab 2, S_C = 1,04 para Tab3, e S_C = 1,39 para Tab 4. Tab 0 pode ser uma função linear, em que h(x) = x.
[0199] Observe que, além dessa forma de equação, o codificador de vídeo 200 e o decodificador de vídeo 300 também podem aplicar arredondamentos para g(x) e TableQP(). Para as tabelas na divulgação, arredondamento foi aplicado e TableQP() foi usado na forma de tabela. Nas versões de ChTableQpLin(), as versões arredondadas de g(x) e TableQP() não podem ser utilizadas.
[0200] O codificador de vídeo 200 e o decodificador de vídeo 300 podem usar baseQP como o QP de base usado para especificar o codificador QP. O QP com o qual o valor de luma é codificado em uma imagem é dado da seguinte forma: QPPIC = baseQP + hierQPOffset QPY = QPPIC em que hierQPOffset é o deslocamento de QP aplicado à imagem nas estruturas de predição hierárquica, QPPic é o QP de imagem, e QPY é o QP de luma. Um deltaQP também pode ser definido como um deslocamento de QP que pode ser aplicado no nível de CU.
[0201] Em alguns exemplos, o valor de baseQP é definido igual ao QP usado para codificar uma imagem de acesso intra-aleatório (IRAP). O QP de croma (QPc) que é usado para codificar a imagem de dados de vídeo é calculado da seguinte maneira: cQP = QPY + chQPOffsetFixed + chQPOffset2 (QPPIC) QPc = TableQP (cQP) em que chQPOffsetFixed é o deslocamento de QP de croma fixo aplicado aos componentes de croma (por exemplo, em nível de imagem/nível de corte combinados) e chQPOffset2() é o deslocamento aplicado a componentes de croma que é derivado daquele das tabelas de pesquisa 550 na Figura 12, e TableQP() é uma função usada para derivar o QP de croma (por exemplo, a tabela mostrada na Figura 13).
[0202] Em vez de usar a tabela mostrada na Figura 13 para derivar o valor de QP de croma, o codificador de vídeo 200 e o decodificador de vídeo 300 também podem ser configurados para usar uma função paramétrica para obter os valores semelhantes a TableQp(). Neste exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem derivar TableQp(x), derivado como segue: TableQP(x) = x, x < 29 29+(8/14)*(x - 29) para 29 <= x <= 43 x - 6, x > 43
[0203] Como pode ser visto do acima, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para determinar um valor de QP de imagem (QPPIC) para uma imagem de dados de vídeo. O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser ainda configurados para determinar um valor de deslocamento de QP de croma intermediário (chQPOffset2) para um valor de QP de croma (QPc) com base no valor de QP de imagem e uma tabela de pesquisa de múltiplas tabelas de pesquisa (por exemplo, tabelas de pesquisa 550 da Figura 12), em que a tabela de pesquisa é com base em características de vídeo da imagem de dados de vídeo. O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser ainda configurados para determinar o valor de QP de croma como uma função do valor de deslocamento de QP de croma intermediário, e decodificar a imagem de dados de vídeo usando o valor de QP de croma.
[0204] Em alguns exemplos, QPPIC pode ser sinalizado como QP de fatia para luma e chQPOffsetFixed pode ser sinalizado como deslocamento de QP de croma PPS.
[0205] Em alguns exemplo, a escala de DRA de luma SY[i] é aplicada a valores de luma na i-ésima faixa de luma. A escala de DRA de croma é também derivada para cada faixa como segue: SCh[ i ] = SY[ i ] * Scorr[ i ] Em que Scorr[i] é o termo de correção aplicado à i-ésima faixa, e derivado para cada faixa como segue: Qp1 = baseQP + chQPOffsetFixed Qp2 = baseQP + chQPOffsetFixed - scale2QP(SY[i]) qpShift1 = Qp1 - TableQPLin(Qp1 + chQPOffset2Lin(baseQP))
qpShift2 = Qp2 - TableQPLin(Qp2 + chQPOffset2Lin(baseQP)) Scorr[i] = qp2Scale(qpShift2 – qpShift1) em que TableQPLin() e chQPOffset2Lin() são versões linearizadas de TableQP() e chQPOffset2(), respectivamente, e qp2Scale( x ) = 2(x/6) e scale2QP(x) = 6*log2(x).
[0206] Em alguns exemplos, TableQPLin() e chQPOffset2Lin() não são linearizados, são definidos como iguais a TableQP() e chQPOffset2(), respectivamente. As tabelas qp2Scale() e scale2QP() definidas acima são apenas exemplos. Deve-se compreender que a divulgação vale para outras definições dessas funções. Exemplo 2
[0207] Neste exemplo, o termo de deslocamento de croma (por exemplo, valor de deslocamento de croma) que é usado para considerar as propriedades de gama dos dados de vídeo é tratada por um valor de escala de DRA de croma, e qualquer variação decorrente da cascata de QP é mitigada pela tabela de quantização.
[0208] Seja baseQP o QP usado para especificar o parâmetro do codificador. O QP com o qual o valor de luma é codificado na imagem é dado da seguinte forma: QPPIC = baseQP + hierQPOffset QPY = QPPIC em que hierQPOffset é o deslocamento de QP aplicado à imagem nas estruturas de predição hierárquicas, e deltaQP é o deslocamento de QP aplicado ao nível de CU. O QP de croma, QPc, que é usado para codificar o vídeo é calculado da seguinte maneira: cQP = QPY + chQPOffsetFixed + chQPOffset2 (QPPIC)-
chQPOffset2 (baseQP) QPc = TableQP (cQP) em que chQPOffsetFixed é o deslocamento de QP de croma fixo aplicado (nível de imagem/nível de fatia combinados) e chQPOffset2() é o deslocamento derivado da tabela, e TableQP() é uma função usada para derivar o QP de croma (por exemplo derivado de a tabela 560 na Figura 13).
[0209] Em alguns exemplos, QPPIC pode ser sinalizado como um QP de fatia para luma e chQPOffsetFixed pode ser sinalizado como deslocamento de QP de croma PPS.
[0210] A escala de DRA de luma SY[i] é aplicada a valores de luma na i-ésima faixa de luma. A escala de DRA de croma é também derivada para cada faixa da seguinte forma: SCh[i] = SY[i] * Scorr[i] * SCX em que SCX é a escala derivada usando a gama do conteúdo (por exemplo BT.709, P3), Scorr[i] é o termo de escala de correção aplicado à i-ésima faixa, e derivado como segue: Qp1 = baseQP + chQPOffsetFixed Qp2 = baseQP + chQPOffsetFixed + chQPOffset2Lin(baseQP) - scale2QP(SY[i]) qpShift1 = Qp1 - TableQPLin(Qp1) qpShift2 = Qp2 - TableQPLin(Qp2) Scorr[i] = qp2Scale(qpShift2 – qpShift1). TableQPLin() e chQPOffset2Lin () são versões linearizadas de TableQP() e chQPOffset2( ), respectivamente, e qp2Scale(x) = 2(x/6) e scale2QP(x) = 6*log2(x).
[0211] Em alguns exemplos, TableQPLin() e chQPOffset2Lin() não são linearizados e são definidos iguais a TableQP() e chQPOffset2(), respectivamente. As tabelas qp2Scale() e scale2QP() definidas acima são apenas exemplos. Deve-se compreender que a divulgação vale para outras definições dessas funções.
[0212] Em outro exemplo, Qp2 é derivado como segue: Qp2 = baseQP + chQPOffsetFixed - scale2QP (SCX) - scale2QP(SY[i])
[0213] Em alguns exemplos, em que a função de DRA é também sinalizada em cada quadro, a derivação de Scorr[i] pode ser modificada para QPY no lugar de baseQP em partes da derivação descrita acima. Exemplo 3
[0214] Em alguns exemplos, o valor de QP de croma do bloco sendo decodificado pode ser derivado como segue: QPcx=fun3 (primeiro conjunto de parâmetros) + fun4(segundo parâmetro) por exemplo, QPcx=Tabela1 (baseQP+QPpps + QPslice) + Tabela2(deltaQP) em que QPcx é um valor de QP a ser aplicado ao bloco de croma atualmente processado (por exemplo, Cb ou Cr), uma primeira tabela pode definir a primeira função de derivação para converter valores de QP de entrada (baseQP+QPpps+QPslice) para um valor de saída, similar à tabela 8-10 definida em HEVC, e uma segunda tabela define uma segunda função de derivação que toma um valor deltaQP para obter um deslocamento de QP que é aplicado a um bloco de amostras de luma associadas com amostras de croma atualmente decodificadas. Ainda em outros exemplos, o valor de QP de saída pode ser derivado como:
QPcx=fun3((primeiro conjunto de parâmetros) * fun4(segundo parâmetro) QPcx=fun2(segundo parâmetro, fun1 (primeiro conjunto de parâmetros)) como similarmente descrito acima, em que fun3( ) e fun4( ) também representam derivação do primeiro e segundo conjunto de parâmetros. Em outro exemplo, o valor de QP usado para processar o bloco de croma, QPcx, pode ser obtido como uma composição das duas funções fun2( ) e fun1( ). Exemplo 4
[0215] Em alguns exemplos, um ou mais dos processos discutidos acima, por exemplo, derivação de valor de QP, podem ser aplicados no nível de bloco, por exemplo, dentro de um ciclo de codificação.
[0216] A Figura 14 é um fluxograma ilustrando um método de codificação exemplificativo de acordo com as técnicas desta divulgação. Em um exemplo da divulgação, o codificador de vídeo 200 pode ser configurado para determinar um valor de parâmetro de quantização (QP) de imagem da imagem de dados de vídeo (1400), determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma usando o valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo (1402), e determinar o valor de QP de croma com uma segunda função do valor de deslocamento de QP de croma intermediário (1404). O codificador de vídeo 200 pode ser ainda configurado para codificar a imagem de dados de vídeo usando o valor de QP de croma para produzir uma imagem codificada (1406).
[0217] Em um exemplo, a primeira função é implementada como uma tabela de pesquisa de uma pluralidade de tabelas de pesquisa, em que o valor de QP de imagem é uma entrada à tabela de pesquisa, e em que a tabela de pesquisa é com base em características de vídeo da imagem de dados de vídeo. Em um exemplo, as características de vídeo da imagem de dados de vídeo incluem um ou mais de um componente de cor, uma gama de cores ou um espaço de cor.
[0218] Em outro exemplo da divulgação, o codificador de vídeo 200 é ainda configurado para determinar o valor de QP de imagem com base em um valor de QP de base e um valor de deslocamento de QP hierárquico, em que, para determinar o valor de deslocamento de QP de croma intermediário para o valor de QP de croma, o codificador de vídeo 200 é ainda configurado para determinar o valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base no valor de QP de imagem e na tabela de pesquisa.
[0219] Em outro exemplo da divulgação, para determinar o valor de QP de croma como a segunda função do valor de deslocamento de QP de croma intermediário, o codificador de vídeo 200 é ainda configurado para determinar o valor de QP de croma com base no valor de QP de imagem, o valor de deslocamento de QP de croma intermediário, e um valor de deslocamento de QP de croma fixo.
[0220] Em outro exemplo da divulgação, para determinar o valor de deslocamento de QP de croma intermediário, o codificador de vídeo 200 é ainda configurado para determinar um primeiro valor de deslocamento de QP de croma intermediário para o valor de
QP de croma com base no valor de QP de base e na tabela de pesquisa, e determinar um segundo valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base no valor de QP de imagem e na tabela de pesquisa.
[0221] Em outro exemplo da divulgação, para determinar o valor de QP de croma como a segunda função do valor de deslocamento de QP de croma intermediário, o codificador de vídeo 200 é ainda configurado para determinar o valor de QP de croma com base no valor de QP de imagem, o primeiro valor de deslocamento de QP de croma intermediário, o segundo valor de deslocamento de QP de croma intermediário, e um valor de deslocamento de QP de croma fixo.
[0222] Em outro exemplo da divulgação, o codificador de vídeo 200 é ainda configurado para determinar a tabela de pesquisa a partir da pluralidade de tabelas de pesquisa com base em um ou mais de um componente de cor croma ou uma gama de cores da imagem.
[0223] A Figura 15 é um fluxograma ilustrando um método de decodificação exemplificativo de acordo com as técnicas desta divulgação. Em um exemplo da divulgação, o decodificador de vídeo 300 pode ser configurado para determinar um valor de parâmetro de quantização (QP) de imagem da imagem de dados de vídeo (1500), determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma usando o valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo (1502), e determinar o valor de QP de croma com uma segunda função do valor de deslocamento de QP de croma intermediário (1504). O decodificador de vídeo
300 pode ser ainda configurado para decodificar a imagem de dados de vídeo usando o valor de QP de croma para produzir uma imagem decodificada (1506).
[0224] Em um exemplo, a primeira função é implementada como uma tabela de pesquisa de uma pluralidade de tabelas de pesquisa, em que o valor de QP de imagem é uma entrada à tabela de pesquisa, e em que a tabela de pesquisa é com base em características de vídeo da imagem de dados de vídeo. Em um exemplo, as características de vídeo da imagem de dados de vídeo incluem um ou mais de um componente de cor, uma gama de cores ou um espaço de cor.
[0225] Em outro exemplo da divulgação, o decodificador de vídeo 300 é ainda configurado para determinar o valor de QP de imagem com base em um valor de QP de base e um valor de deslocamento de QP hierárquico, em que, para determinar o valor de deslocamento de QP de croma intermediário para o valor de QP de croma, decodificador de vídeo 300 é ainda configurado para determinar o valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base no valor de QP de imagem e na tabela de pesquisa.
[0226] Em outro exemplo da divulgação, para determinar o valor de QP de croma como a segunda função do valor de deslocamento de QP de croma intermediário, o decodificador de vídeo 300 é ainda configurado para determinar o valor de QP de croma com base no valor de QP de imagem, o valor de deslocamento de QP de croma intermediário, e um valor de deslocamento de QP de croma fixo.
[0227] Em outro exemplo da divulgação, para determinar o valor de deslocamento de QP de croma intermediário, o decodificador de vídeo 300 é ainda configurado para determinar um primeiro valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base no valor de QP de base e na tabela de pesquisa, e determinar um segundo valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base no valor de QP de imagem e na tabela de pesquisa.
[0228] Em outro exemplo da divulgação, para determinar o valor de QP de croma como a segunda função do valor de deslocamento de QP de croma intermediário, o decodificador de vídeo 300 é ainda configurado para determinar o valor de QP de croma com base no valor de QP de imagem, o primeiro valor de deslocamento de QP de croma intermediário, o segundo valor de deslocamento de QP de croma intermediário, e um valor de deslocamento de QP de croma fixo.
[0229] Em outro exemplo da divulgação, o decodificador de vídeo 300 é ainda configurado para determinar a tabela de pesquisa a partir da pluralidade de tabelas de pesquisa com base em um ou mais de um componente de cor croma ou uma gama de cores da imagem.
[0230] Em outro exemplo da divulgação, o decodificador de vídeo 300 é ainda configurado para determinar a tabela de pesquisa a partir da pluralidade de tabelas de pesquisa com base em um elemento de sintaxe recebido em um fluxo de bits de vídeo codificado.
[0231] Em outro exemplo da divulgação, o decodificador de vídeo 300 é ainda configurado para determinar um valor de escala de luma para ajuste de faixa dinâmica, determinar um valor de escala de croma para ajuste de faixa dinâmica como uma terceira função um valor de QP de base, um valor de deslocamento de QP de croma fixo, o valor de escala de luma, e uma versão linearizada do valor de deslocamento de QP de croma intermediário, e realizar um ajuste de faixa dinâmica na imagem decodificada usando o valor de escala de luma e o valor de escala de croma.
[0232] Em outro exemplo da divulgação, o decodificador de vídeo 300 é ainda configurado para determinar um valor de escala de luma para ajuste de faixa dinâmica, determinar um valor de escala de croma para ajuste de faixa dinâmica como uma terceira função um valor de QP de base, um valor de deslocamento de QP de croma fixo, o valor de escala de luma, uma gama de cores da imagem, e uma versão linearizada do valor de deslocamento de QP de croma intermediário, e realizar um ajuste de faixa dinâmica na imagem decodificada usando o valor de escala de luma e o valor de escala de croma.
[0233] Em outro exemplo da divulgação, para determinar o valor de deslocamento de QP de croma intermediário, o decodificador de vídeo 300 é ainda configurado para determinar o valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base em um valor de QP de base, e um ou mais de um valor de QP a partir de um conjunto de parâmetros de imagem, e um valor de QP a partir de um cabeçalho de fatia.
[0234] Em outro exemplo da divulgação, o decodificador de vídeo 300 é ainda configurado para emitir a imagem decodificada para exibição.
[0235] Deve-se reconhecer que, dependendo do exemplo, certas ações ou eventos de quaisquer das técnicas aqui descritas podem ser realizados em uma sequência diferente, podem ser adicionados, mesclados ou omitidos por completo (por exemplo, nem todas as ações ou eventos descritos são necessários para a prática de técnicas). Além disso, em certos exemplos, as ações ou eventos podem ser realizados simultaneamente, por exemplo, através de processamento multissegmentado, processamento de interrupção, ou múltiplos processadores, em vez de sequencialmente.
[0236] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação destes. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. Meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível, tal como meios de armazenamento de dados, ou meios de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um local para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa maneira, o meio legível por computador geralmente pode corresponder a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação, tal como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que possa ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir uma meio legível por computador.
[0237] A título de exemplo, e não de limitação, tais meios de armazenamento legíveis por computador podem incluir RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser usado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possam ser acessados por um computador. Além disso, qualquer conexão é apropriadamente denominada meio legível por computador. Por exemplo, se as instruções forem transmitidas de um site, servidor, ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL), ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, então, o cabo coaxial, cabo de fibra óptica, par trançado, DSL, ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas estão incluídos na definição de meio. Deve ser entendido, no entanto, que os meios de armazenamento legíveis por computador e os meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas são direcionados a meios de armazenamento tangíveis não transitórios. Disco (disk) e disco (disc), conforme usados aqui, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disco flexível e disco Blu-ray, em que os discos (disks) geralmente reproduzem dados magneticamente, enquanto os discos (discs) reproduzem dados opticamente com lasers. Combinações dos itens acima também devem ser incluídas no escopo de meio legível por computador.
[0238] Instruções podem ser executadas por um ou mais processadores, tais como um ou mais DSPs, microprocessadores de uso geral, ASICs, FPGAs, ou outros circuitos de lógica discreta ou integrados equivalentes. Consequentemente, o termo “processador”, como usado neste documento, pode se referir a qualquer estrutura anterior ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida em módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0239] As técnicas desta divulgação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho de telefone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um chipset). 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 necessariamente requerem a realização por diferentes unidades de hardware. Em vez disso, conforme 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, conforme descrito acima, em conjunto com software e/ou firmware adequados.
[0240] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das seguintes reivindicações.

Claims (30)

REIVINDICAÇÕES
1. Método de decodificar uma imagem de dados de vídeo, o método compreendendo: determinar um valor de parâmetro de quantização (QP) de imagem da imagem de dados de vídeo; determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma usando o valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo; determinar o valor de QP de croma com uma segunda função do valor de deslocamento de QP de croma intermediário; e decodificar a imagem de dados de vídeo usando o valor de QP de croma para produzir uma imagem decodificada.
2. Método, de acordo com a reivindicação 1, em que a primeira função é implementada como uma tabela de pesquisa de uma pluralidade de tabelas de pesquisa, em que o valor de QP de imagem é uma entrada à tabela de pesquisa, e em que a tabela de pesquisa é com base em características de vídeo da imagem de dados de vídeo.
3. Método, de acordo com a reivindicação 2, em que as características de vídeo da imagem de dados de vídeo incluem um ou mais de um componente de cor, uma gama de cores ou um espaço de cor.
4. Método, de acordo com a reivindicação 2, ainda compreendendo: determinar o valor de QP de imagem com base em um valor de QP de base e um valor de deslocamento de QP hierárquico,
em que determinar o valor de deslocamento de QP de croma intermediário para o valor de QP de croma compreende determinar o valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base no valor de QP de imagem e na tabela de pesquisa.
5. Método, de acordo com a reivindicação 4, em que determinar o valor de QP de croma como a segunda função do valor de deslocamento de QP de croma intermediário compreende: determinar o valor de QP de croma com base no valor de QP de imagem, o valor de deslocamento de QP de croma intermediário, e um valor de deslocamento de QP de croma fixo.
6. Método, de acordo com a reivindicação 4, em que determinar o valor de deslocamento de QP de croma intermediário compreende: determinar um primeiro valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base no valor de QP de base e na tabela de pesquisa; e determinar um segundo valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base no valor de QP de imagem e na tabela de pesquisa.
7. Método, de acordo com a reivindicação 6, em que determinar o valor de QP de croma como a segunda função do valor de deslocamento de QP de croma intermediário compreende: determinar o valor de QP de croma com base no valor de QP de imagem, o primeiro valor de deslocamento de QP de croma intermediário, o segundo valor de deslocamento de QP de croma intermediário, e um valor de deslocamento de QP de croma fixo
8. Método, de acordo com a reivindicação 2, ainda compreendendo: determinar a tabela de pesquisa a partir da pluralidade de tabelas de pesquisa com base em um ou mais de um componente de cor croma ou uma gama de cores da imagem.
9. Método, de acordo com a reivindicação 2, ainda compreendendo: determinar a tabela de pesquisa a partir da pluralidade de tabelas de pesquisa com base em um elemento de sintaxe recebido em um fluxo de bits de vídeo codificado.
10. Método, de acordo com a reivindicação 1, ainda compreendendo: determinar um valor de escala de luma para ajuste de faixa dinâmica; determinar um valor de escala de croma para ajuste de faixa dinâmica como uma terceira função, um valor de QP de base, um valor de deslocamento de QP de croma fixo, o valor de escala de luma, e uma versão linearizada do valor de deslocamento de QP de croma intermediário; e realizar um ajuste de faixa dinâmica na imagem decodificada usando o valor de escala de luma e o valor de escala de croma.
11. Método, de acordo com a reivindicação 1, ainda compreendendo: determinar um valor de escala de luma para ajuste de faixa dinâmica; determinar um valor de escala de croma para ajuste de faixa dinâmica como uma terceira função, um valor de QP de base, um valor de deslocamento de QP de croma fixo, o valor de escala de luma, uma gama de cores da imagem, e uma versão linearizada do valor de deslocamento de QP de croma intermediário; e realizar um ajuste de faixa dinâmica na imagem decodificada usando o valor de escala de luma e o valor de escala de croma.
12. Método, de acordo com a reivindicação 1, em que determinar o valor de deslocamento de QP de croma intermediário compreende determinar o valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base em um valor de QP de base, e um ou mais de um valor de QP a partir de um conjunto de parâmetros de imagem, e um valor de QP a partir de um cabeçalho de fatia.
13. Método, de acordo com a reivindicação 1, ainda compreendendo: emitir a imagem decodificada para exibição.
14. Aparelho configurado para decodificar dados de vídeo, o aparelho compreendendo: uma memória configurada para armazenar uma imagem de dados de vídeo; e um ou mais processadores em comunicação com a memória, os um ou mais processadores configurados para: determinar um valor de parâmetro de quantização (QP) de imagem da imagem de dados de vídeo; determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma usando o valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo; determinar o valor de QP de croma com uma segunda função do valor de deslocamento de QP de croma intermediário; e decodificar a imagem de dados de vídeo usando o valor de QP de croma para produzir uma imagem decodificada.
15. Aparelho, de acordo com a reivindicação 14, em que a primeira função é implementada como uma tabela de pesquisa de uma pluralidade de tabelas de pesquisa, em que o valor de QP de imagem é uma entrada à tabela de pesquisa, e em que a tabela de pesquisa é com base em características de vídeo da imagem de dados de vídeo.
16. Aparelho, de acordo com a reivindicação 15, em que as características de vídeo da imagem de dados de vídeo incluem um ou mais de um componente de cor, uma gama de cores ou um espaço de cor.
17. Aparelho, de acordo com a reivindicação 15, em que os um ou mais processadores são ainda configurados para: determinar o valor de QP de imagem com base em um valor de QP de base e um valor de deslocamento de QP hierárquico, em que, para determinar o valor de deslocamento de QP de croma intermediário para o valor de QP de croma, os um ou mais processadores são ainda configurados para determinar o valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base no valor de QP de imagem e na tabela de pesquisa.
18. Aparelho, de acordo com a reivindicação 17, em que, para determinar o valor de QP de croma como a segunda função do valor de deslocamento de QP de croma intermediário, os um ou mais processadores são ainda configurados para: determinar o valor de QP de croma com base no valor de QP de imagem, o valor de deslocamento de QP de croma intermediário e um valor de deslocamento de QP de croma fixo.
19. Aparelho, de acordo com a reivindicação 17, em que, para determinar o valor de deslocamento de QP de croma intermediário, os um ou mais processadores são ainda configurados para: determinar um primeiro valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base no valor de QP de base e na tabela de pesquisa; e determinar um segundo valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base no valor de QP de imagem e na tabela de pesquisa.
20. Aparelho, de acordo com a reivindicação 19, em que, para determinar o valor de QP de croma como a segunda função do valor de deslocamento de QP de croma intermediário, os um ou mais processadores são ainda configurados para: determinar o valor de QP de croma com base no valor de QP de imagem, o primeiro valor de deslocamento de QP de croma intermediário, o segundo valor de deslocamento de QP de croma intermediário, e um valor de deslocamento de QP de croma fixo.
21. Aparelho, de acordo com a reivindicação 15, em que os um ou mais processadores são ainda configurados para: determinar a tabela de pesquisa a partir da pluralidade de tabelas de pesquisa com base em um ou mais de um componente de cor croma ou uma gama de cores da imagem.
22. Aparelho, de acordo com a reivindicação 15, em que os um ou mais processadores são ainda configurados para: determinar a tabela de pesquisa a partir da pluralidade de tabelas de pesquisa com base em um elemento de sintaxe recebido em um fluxo de bits de vídeo codificado.
23. Aparelho, de acordo com a reivindicação 14, em que os um ou mais processadores são ainda configurados para: determinar um valor de escala de luma para ajuste de faixa dinâmica; determinar um valor de escala de croma para ajuste de faixa dinâmica como uma terceira função um valor de QP de base, um valor de deslocamento de QP de croma fixo, o valor de escala de luma, e uma versão linearizada do valor de deslocamento de QP de croma intermediário; e realizar um ajuste de faixa dinâmica na imagem decodificada usando o valor de escala de luma e o valor de escala de croma.
24. Aparelho, de acordo com a reivindicação 14, em que os um ou mais processadores são ainda configurados para: determinar um valor de escala de luma para ajuste de faixa dinâmica; determinar um valor de escala de croma para ajuste de faixa dinâmica como uma terceira função, um valor de QP de base, um valor de deslocamento de QP de croma fixo, o valor de escala de luma, uma gama de cores da imagem, e uma versão linearizada do valor de deslocamento de QP de croma intermediário; e realizar um ajuste de faixa dinâmica na imagem decodificada usando o valor de escala de luma e o valor de escala de croma.
25. Aparelho, de acordo com a reivindicação 14, em que, para determinar o valor de deslocamento de QP de croma intermediário, os um ou mais processadores são ainda configurados para determinar o valor de deslocamento de QP de croma intermediário para o valor de QP de croma com base em um valor de QP de base, e um ou mais de um valor de QP a partir de um conjunto de parâmetros de imagem, e um valor de QP a partir de um cabeçalho de fatia.
26. Aparelho, de acordo com a reivindicação 14, em que os um ou mais processadores são ainda configurados para: emitir a imagem decodificada para exibição.
27. Aparelho configurado para decodificar dados de vídeo, o aparelho compreendendo: meios para determinar um valor de parâmetro de quantização (QP) de imagem da imagem de dados de vídeo; meios para determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma usando o valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo; meios para determinar o valor de QP de croma com uma segunda função do valor de deslocamento de QP de croma intermediário; e meios para decodificar a imagem de dados de vídeo usando o valor de QP de croma para produzir uma imagem decodificada.
28. Aparelho, de acordo com a reivindicação 27, em que a primeira função é implementada como uma tabela de pesquisa de uma pluralidade de tabelas de pesquisa, em que o valor de QP de imagem é uma entrada à tabela de pesquisa, e em que a tabela de pesquisa é com base em características de vídeo da imagem de dados de vídeo.
29. Meio de armazenamento legível por computador armazenando instruções que, quando executadas, levam um ou mais processadores de um dispositivo configurado para decodificar dados de vídeo a: determinar um valor de parâmetro de quantização (QP) de imagem da imagem de dados de vídeo; determinar um valor de deslocamento de QP de croma intermediário para um valor de QP de croma usando o valor de QP de imagem e uma primeira função com base em características de vídeo da imagem de dados de vídeo; determinar o valor de QP de croma com uma segunda função do valor de deslocamento de QP de croma intermediário; e decodificar a imagem de dados de vídeo usando o valor de QP de croma para produzir uma imagem decodificada.
30. Meio de armazenamento legível por computador, de acordo com a reivindicação 29, em que a primeira função é implementada como uma tabela de pesquisa de uma pluralidade de tabelas de pesquisa, em que o valor de QP de imagem é uma entrada à tabela de pesquisa, e em que a tabela de pesquisa é com base em características de vídeo da imagem de dados de vídeo.
BR112020020594-0A 2018-04-12 2019-04-11 Harmonização de quantização baseada em transformadas e derivação de escala de ajuste de faixa dinâmica em codificação de vídeo BR112020020594A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862656936P 2018-04-12 2018-04-12
US62/656,936 2018-04-12
US16/380,520 US11259023B2 (en) 2018-04-12 2019-04-10 Harmonization of transform-based quantization and dynamic range adjustment scale derivation in video coding
US16/380,520 2019-04-10
PCT/US2019/026966 WO2019200085A1 (en) 2018-04-12 2019-04-11 Harmonization of transform-based quantization and dynamic range adjustment scale derivation in video coding

Publications (1)

Publication Number Publication Date
BR112020020594A2 true BR112020020594A2 (pt) 2021-01-12

Family

ID=68160559

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020020594-0A BR112020020594A2 (pt) 2018-04-12 2019-04-11 Harmonização de quantização baseada em transformadas e derivação de escala de ajuste de faixa dinâmica em codificação de vídeo

Country Status (9)

Country Link
US (1) US11259023B2 (pt)
EP (1) EP3777155A1 (pt)
KR (1) KR20200140838A (pt)
CN (1) CN111937384B (pt)
AU (1) AU2019252418B2 (pt)
BR (1) BR112020020594A2 (pt)
SG (1) SG11202009087XA (pt)
TW (1) TWI807008B (pt)
WO (1) WO2019200085A1 (pt)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11146823B2 (en) 2019-06-25 2021-10-12 Qualcomm Incorporated Signalling chroma quantization parameter (QP) mapping tables
CN110933416B (zh) * 2019-11-12 2021-07-20 宁波大学 高动态范围视频自适应预处理方法
JP7277354B2 (ja) * 2019-12-26 2023-05-18 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
CN114868388A (zh) * 2019-12-27 2022-08-05 北京达佳互联信息技术有限公司 在4:4:4色度格式下进行视频编解码的方法和装置
US11303897B2 (en) * 2020-02-25 2022-04-12 Tencent America LLC Method and apparatus for signaling of chroma quantization parameters
US11558616B2 (en) * 2020-03-05 2023-01-17 Qualcomm Incorporated Methods for quantization parameter control for video coding with joined pixel/transform based quantization

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110234009B (zh) * 2012-01-20 2021-10-29 维洛媒体国际有限公司 色度量化参数扩展的解码方法及装置
GB2501535A (en) * 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US9591302B2 (en) 2012-07-02 2017-03-07 Microsoft Technology Licensing, Llc Use of chroma quantization parameter offsets in deblocking
JP5986877B2 (ja) * 2012-10-17 2016-09-06 日立マクセル株式会社 画像伝送システム
US9510002B2 (en) * 2013-09-09 2016-11-29 Apple Inc. Chroma quantization in video coding
EP4087247A1 (en) * 2014-02-26 2022-11-09 Dolby Laboratories Licensing Corp. Luminance based coding tools for video compression
US11070810B2 (en) 2014-03-14 2021-07-20 Qualcomm Incorporated Modifying bit depths in color-space transform coding
US10623740B2 (en) * 2015-09-23 2020-04-14 Telefonaktiebolaget Lm Ericsson (Publ) Determination of QP values
EP3446486B1 (en) 2016-04-22 2021-12-08 Dolby Laboratories Licensing Corporation Coding of hdr video signals in the ictcp color format
US10200698B2 (en) * 2016-08-09 2019-02-05 Intel Corporation Determining chroma quantization parameters for video coding
US11689722B2 (en) * 2018-04-02 2023-06-27 Sharp Kabushiki Kaisha Systems and methods for deriving quantization parameters for video blocks in video coding

Also Published As

Publication number Publication date
AU2019252418A1 (en) 2020-10-15
AU2019252418B2 (en) 2022-12-01
US20190320174A1 (en) 2019-10-17
KR20200140838A (ko) 2020-12-16
SG11202009087XA (en) 2020-10-29
WO2019200085A1 (en) 2019-10-17
CN111937384A (zh) 2020-11-13
CN111937384B (zh) 2022-10-25
TW201944780A (zh) 2019-11-16
EP3777155A1 (en) 2021-02-17
US11259023B2 (en) 2022-02-22
TWI807008B (zh) 2023-07-01

Similar Documents

Publication Publication Date Title
BR112020003037A2 (pt) sistema e método de ajuste de faixa dinâmico de componente cruzado (cc-dra) em codificação de vídeo
BR112020006985A2 (pt) codificação de vídeo com quantização espacialmente variável adaptável ao conteúdo
BR112020020594A2 (pt) Harmonização de quantização baseada em transformadas e derivação de escala de ajuste de faixa dinâmica em codificação de vídeo
US11146823B2 (en) Signalling chroma quantization parameter (QP) mapping tables
US11303912B2 (en) Decoded picture buffer management and dynamic range adjustment
TW202119820A (zh) 視訊寫碼中之色度差量量化參數
US11533512B2 (en) Dynamic range adjustment parameter signaling and enablement of variable bit depth support
US11558616B2 (en) Methods for quantization parameter control for video coding with joined pixel/transform based quantization
US11671600B2 (en) Signaling intensity dependent deblocking filtering for video coding
US11463737B2 (en) Signaling of dynamic range adjustment parameters for decoded picture buffer management and dynamic range
US20240098293A1 (en) Encoding high dynamic range video data

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]