BR112020015394A2 - Remodelagem de imagem em codificação de vídeo usando otimização de taxa - distorção - Google Patents

Remodelagem de imagem em codificação de vídeo usando otimização de taxa - distorção Download PDF

Info

Publication number
BR112020015394A2
BR112020015394A2 BR112020015394-0A BR112020015394A BR112020015394A2 BR 112020015394 A2 BR112020015394 A2 BR 112020015394A2 BR 112020015394 A BR112020015394 A BR 112020015394A BR 112020015394 A2 BR112020015394 A2 BR 112020015394A2
Authority
BR
Brazil
Prior art keywords
compartment
remodeling
codeword
representation
compartments
Prior art date
Application number
BR112020015394-0A
Other languages
English (en)
Inventor
Peng Yin
Fangjun PU
Taoran Lu
Tao Chen
Walter J. husak
Sean Thomas McCarthy
Original Assignee
Dolby Laboratories Licensing Corporation
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 Dolby Laboratories Licensing Corporation filed Critical Dolby Laboratories Licensing Corporation
Publication of BR112020015394A2 publication Critical patent/BR112020015394A2/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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

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

Abstract

a presente invenção refere-se, dada uma sequência de imagens em uma primeira representação de palavra de código, a métodos, processos e sistemas que são apresentados para remodelagem de imagem usando otimização de taxa - distorção, em que a remodelagem permite que as imagens sejam codificadas em uma segunda representação de palavra de código que permite uma compressão mais eficiente do que a primeira representação de palavra de código. métodos de sintaxe para sinalizar parâmetros de remodelagem também são apresentados.

Description

“REMODELAGEM DE IMAGEM EM CODIFICAÇÃO DE VÍDEO USANDO OTIMIZAÇÃO DE TAXA - DISTORÇÃO” REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[001]Este pedido reivindica o benefício de prioridade para os pedidos de patentes provisórias US. No. 62/792.122, depositado em 14/01/2019, No. 62/782.659, depositado em 20 de dezembro de 2018, No. 62/772.228, depositado em 28 de novembro de 2018, No. 62/739.402, depositado em 1 de outubro de 2018, No. 62/726.608, depositado em 4 de setembro de 2018, No. 62/691.366, depositado em 28 de junho de 2018, e No. 62/630.385, depositado em 14 de fevereiro de 2018, cada um dos quais é incorporado aqui por referência em sua totalidade.
CAMPO DA TÉCNICA
[002]A presente invenção refere-se genericamente a imagens e codificação de vídeo. Mais particularmente, uma modalidade da presente invenção refere-se à remodelagem da imagem na codificação de vídeo.
FUNDAMENTOS DA INVENÇÃO
[003]Em 2013, o grupo MPEG na International Standardization Organization (ISO), em conjunto com a International Telecommunications Union (ITU), lançou o primeiro rascunho do padrão de codificação de vídeo HEVC (também conhecido como H.265) (Ref. [4]). Mais recentemente, o mesmo grupo lançou um pedido de evidências para suportar o desenvolvimento de um padrão de codificação de próxima geração que forneça melhor desempenho de codificação em relação às tecnologias de codificação de vídeo existentes.
[004]Como usado neste documento, o termo “profundidade de bits” indica o número de pixels usados para representar um dos componentes de cor de uma imagem. Tradicionalmente, as imagens eram codificadas em 8 bits, por componente de cor, por pixel (por exemplo, 24 bits por pixel); no entanto, as arquiteturas modernas agora podem suportar profundidades de bits mais altas, tal como 10 bits, 12 bits ou mais.
[0O5JEmM um pipeline de imagem tradicional, as imagens capturadas são quantizadas usando uma função optoeletrônica não linear (OETF), que converte luz de cena linear em um sinal de vídeo não linear (por exemplo, RGB ou YCbCr gama- codificado). Então, no receptor, antes de ser exibido na tela, o sinal é processado por uma função de transferência eletro-óptica (EOTF), que traduz os valores do sinal de vídeo nos valores de cor da tela de saída. Tais funções não lineares incluem a curva “gama” tradicional, documentada em ITU-R Rec. BT.709 e BT. 2020, a curva “PQ” (quantização perceptiva) descrita em SMPTE ST 2084 e a curva “HybridLog-gama” ou “HLG” descrita em Rec. ITU-R BT. 2100.
[006]Como usado aqui, o termo “remodelagem direta” denota um processo de mapeamento de amostra - amostra ou palavra de código — palavra de código de uma imagem digital a partir de sua profundidade de bits original e distribuição ou representação de palavras de código originais (por exemplo, gama ou PQ ou HLG, e similares) a uma imagem com a mesma ou diferente profundidade de bits e uma distribuição ou representação de palavras de código diferente. A remodelagem permite uma compressibilidade aprimorada ou uma qualidade de imagem aprimorada a uma taxa de bits fixa. Por exemplo, sem limitação, a remodelagem pode ser aplicada ao vídeo HDR com PQ-codificado de 10 ou 12 bits para melhorar a eficiência da codificação em uma arquitetura de codificação de vídeo de 10 bits. Em um receptor, após descomprimir o sinal remodelado, o receptor pode aplicar uma “função de remodelagem inversa” para restaurar o sinal à sua distribuição original de palavras de código. Como apreciado pelos presentes inventores, à medida que o desenvolvimento começa para a próxima geração de um padrão de codificação de vídeo, são necessárias técnicas aprimoradas para a remodelagem e codificação integradas de imagens. Os métodos desta invenção podem ser aplicáveis a uma variedade de conteúdos de vídeo, incluindo, mas não limitados a, conteúdo na faixa dinâmica padrão (SDR) e / ou faixa dinâmica alta (HDR).
[007]As abordagens descritas nesta seção são abordagens que podem ser adotadas, mas não necessariamente abordagens que foram previamente concebidas ou adotadas. Portanto, a menos que seja indicado de outra forma, não se deve presumir que qualquer uma das abordagens descritas nesta seção seja qualificada como técnica anterior apenas em virtude de sua inclusão nesta seção. Da mesma forma, os problemas identificados com relação a uma ou mais abordagens não devem ser reconhecidos em qualquer técnica anterior com base nesta seção, a menos que indicado de outra forma.
BREVE DESCRIÇÃO DOS DESENHOS
[008]Uma modalidade da presente invenção é ilustrada a título de exemplo, e não de maneira limitante, nas figuras dos desenhos em anexo e nas quais números de referência semelhantes se referem a elementos semelhantes e nos quais:
[009]A Figura 1A representa um processo exembplificativo para um pipeline de entrega de vídeo.
[010]A Figura 1B representa um processo exemplificativo para compressão de dados usando remodelagem de sinal de acordo com a técnica anterior.
[011]A Figura 2A representa uma arquitetura exemplificativa para um codificador usando remodelagem híbrida em malha de acordo com uma modalidade desta invenção.
[012]A Figura 2B representa uma arquitetura exemplificativa para um decodificador usando remodelagem híbrida em malha de acordo com uma modalidade desta invenção.
[013]JA Figura 2C representa uma arquitetura exemplificativa para decodificação intra-CU usando remodelagem de acordo com uma modalidade.
[014]A Figura 2D representa uma arquitetura exemplificativa para decodificação inter-CU usando remodelagem de acordo com uma modalidade.
[015JA Figura 2E representa uma arquitetura exemplificativa para decodificação intra-CU dentro de fatias inter-codificadas de acordo com uma modalidade para processamento de luma ou croma.
[016]A Figura 2F representa uma arquitetura exemplificativa para decodificação intra-CU dentro de fatias inter-codificadas de acordo com uma modalidade para processamento de croma.
[017]A Figura 3A representa um processo exemplificativo para codificação de vídeo usando uma arquitetura de remodelagem de acordo com uma modalidade desta invenção.
[018]A Figura 3B representa um processo exemplificativo para decodificar vídeo usando uma arquitetura de remodelagem de acordo com uma modalidade desta invenção.
[019]A Figura 4 representa um processo exemplificativo para reatribuir palavras de código no domínio remodelado de acordo com uma modalidade desta invenção.
[020]A Figura 5 representa um processo exemplificativo para derivar limites de remodelagem de acordo com uma modalidade desta invenção.
[021]JAs Figuras 6A, 6B, 6C e 6D representam gráficos de dados exemplificativos para derivar limites de remodelagem de acordo com o processo representado na Figura 5 e uma modalidade desta invenção.
[022]A Figura 6E representa exemplos de alocação de palavras de código de acordo com a variância de compartimento de acordo com as modalidades desta invenção.
DESCRIÇÃO DETALHADA
[023]As técnicas de remodelagem e codificação de sinal para compactar imagens usando otimização de taxa - distorção (RDO) são descritas aqui. Na descrição a seguir, para fins de explicação, são apresentados numerosos detalhes específicos, a fim de fornecer um entendimento completo da presente invenção. Será evidente, no entanto, que a presente invenção pode ser praticada sem esses detalhes específicos. Em outros casos, estruturas e dispositivos bem conhecidos não são descritos em detalhes exaustivos, a fim de evitar desnecessariamente obscurecer ou ofuscar a presente invenção.
Visão Geral [024JAs modalidades exemplificativas aqui descritas referem-se à remodelagem e codificação de sinal para vídeo. Em um codificador, um processador recebe uma imagem de entrada em uma primeira representação de palavra de código a ser remodelada para uma segunda representação de palavra de código, em que a segunda representação de palavra de código permite uma compressão mais eficiente do que a primeira representação de palavra de código, e gera uma função de remodelagem direta, mapeando os pixels da imagem de entrada para uma segunda representação de palavra de código, em que para gerar a função de remodelagem direta, o codificador: divide a imagem de entrada em múltiplas regiões de pixel, atribui cada uma das regiões de pixel a um dos múltiplos compartimentos de palavras de código de acordo com uma primeira característica de luminância de cada região de pixel, calcula uma métrica de compartimento para cada um dos múltiplos compartimentos de palavras de código de acordo com uma segunda característica de luminância de cada uma das regiões de pixel atribuídas a cada compartimento de palavras de código, aloca um número de palavras de código na segunda representação de palavras de código para cada compartimento de palavras de código de acordo com a métrica de compartimento de cada compartimento de palavras de código e um critério de otimização de taxa — distorção, e gera a função de remodelagem direta em resposta à alocação de palavras de código na segunda representação de palavra de código para cada um dos múltiplos compartimentos de palavras de código.
[025]Em outra modalidade, em um decodificador, um processador recebe elementos de sintaxe de fluxo de bits codificados caracterizando um modelo de remodelagem, em que os elementos de sintaxe incluem um ou mais de um sinalizador indicando um valor mínimo de índice de compartimento de palavras de código a ser usado em um processo de construção de remodelagem, um sinalizador indicando um valor máximo de índice de compartimento de palavras de código a ser usado em um processo de construção de remodelagem, um sinalizador indicando um tipo de perfil de modelo de remodelagem, em que o tipo de perfil de modelo está associado a parâmetros relacionados ao compartimento padrão, incluindo valores de importância de compartimento, ou um sinalizador indicando um ou mais valores de importância de compartimento delta a serem usados para ajustar os valores de importância de compartimento padrão definidos no perfil de modelo de remodelagem. O processador determina, com base no perfil do modelo de remodelagem, os valores de importância de compartimento padrão para cada compartimento e uma lista de alocação de um número padrão de palavras de código a serem alocadas a cada compartimento, de acordo com o valor de importância do compartimento. Então,
[026]para cada compartimento de palavras de código, o processador:
[027]determina seu valor de importância do compartimento adicionando seu valor de importância do compartimento padrão ao valor de importância do compartimento delta;
[028]determina o número de palavras de código a serem alocadas para o compartimento de palavras de código com base no valor de importância do compartimento e na lista de alocação; e
[029]gera uma função de remodelagem direta com base no número de palavras de código alocadas para cada compartimento de palavras de código.
[030]Em outra modalidade, em um decodificador, um processador recebe um fluxo de bits codificado compreendendo uma ou mais imagens remodeladas codificadas em uma primeira representação de palavra de código e metadados relacionados à informação de remodelagem para as imagens remodeladas codificadas. O processador gera, com base nos metadados relacionados à informação de remodelagem, uma função de remodelagem inversa e uma função de remodelagem direta, em que a função de remodelagem inversa mapeia os pixels da imagem remodelada da primeira representação de palavra de código para uma segunda representação de palavra de código, e a função de remodelagem direta mapeia os pixels de uma imagem da segunda representação de palavra de código para a primeira representação de palavra de código. O processador extrai do fluxo de bits codificado uma imagem remodelada codificada compreendendo uma ou mais unidades codificadas, em que para uma ou mais unidades codificadas na imagem remodelada codificada:
[031]para uma unidade de codificação intra-codificada (CU) remodelada na imagem remodelada codificada, o processador:
[032]gera primeiras amostras reconstruídas remodeladas da CU com base em residuais remodelados na CU e primeiras amostras de predição remodeladas;
[033]gera uma saída de filtro de malha remodelada com base nas primeiras amostras reconstruídas remodeladas e nos parâmetros de filtro de malha.
[034]aplica a função de remodelagem inversa à saída do filtro de malha remodelada para gerar amostras decodificadas da unidade de codificação na segunda representação de palavra de código; e
[035]armazena as amostras decodificadas da unidade de codificação na segunda representação de palavra de código em um armazenador de referência;
[036]para uma unidade de codificação inter-codificada remodelada na imagem remodelada codificada, o processador:
[037]aplica a função de remodelagem direta a amostras de predição armazenadas no armazenador de referência na segunda representação de palavra de código para gerar segundas amostras de predição remodeladas;
[038]gera segundas amostras reconstruídas remodeladas da unidade de codificação com base em residuais remodelados na CU codificada e nas segundas amostras de predição remodeladas;
[039]gera uma saída de filtro de malha remodelada com base nas segundas amostras reconstruídas remodeladas e nos parâmetros do filtro de malha;
[040]aplica a função de remodelagem inversa à saída do filtro de malha remodelada para gerar amostras da unidade de codificação na segunda representação de palavra de código; e [041Jarmazena as amostras da unidade de codificação na segunda representação da palavra de código em um armazenador de referência. Finalmente, o processador gera uma imagem decodificada com base nas amostras armazenadas no armazenador de referência.
[042]Em outra modalidade, em um decodificador, um processador recebe um fluxo de bits codificado compreendendo uma ou mais imagens remodeladas codificadas em uma representação de palavra de código de entrada e remodela os metadados (207) para uma ou mais imagens remodeladas codificadas no fluxo de bits codificado. O processador gera uma função de remodelagem direta (282) com base nos metadados de remodelagem, em que a função de remodelagem direta mapeia os pixels de uma imagem a partir de uma primeira representação de palavra de código para a representação de palavra de código de entrada. O processador gera uma função de remodelagem inversa (265-3) com base nos metadados de remodelagem ou na função de remodelagem direta, em que a função de remodelagem inversa mapeia os pixels de uma imagem remodelada da representação da palavra de código de entrada para a primeira representação da palavra de código. O processador extrai do fluxo de bits codificado uma imagem remodelada codificada compreendendo uma ou mais unidades codificadas, em que:
[043]para uma unidade de codificação intra-codificada (intra-CU) na imagem remodelada codificada, o processador:
[044]gera amostras reconstruídas remodeladas do intra-CU (285) com base em residuais remodelados nas amostras de predição remodeladas intra-CU e remodeladas intra-preditas;
[045]aplica a função de remodelagem inversa (265-3) às amostras reconstruídas remodeladas da intra-CU para gerar amostras decodificadas da intra- CU na primeira representação de palavra de código;
[046]aplica um filtro de malha (270) às amostras decodificadas da intra-CU para gerar amostras de saída da intra-CU; e
[047]armazena as amostras de saída da intra-CU em um armazenador de referência;
[048]para uma CU inter-codificada (inter-CU) na imagem remodelada codificada, o processador:
[049]aplica a função de remodelagem direta (282) a amostras de inter- predição armazenadas no armazenador de referência na primeira representação de palavra de código para gerar amostras de predição remodeladas para a inter-CU na representação de palavra de código de entrada;
[050]gera amostras reconstruídas remodeladas da inter-CU com base em residuais remodelados na inter-CU e as amostras de predição remodeladas para a inter-CU;
[051]aplica a função de remodelagem inversa (265-3) às amostras reconstruídas remodeladas da inter-CU para gerar amostras decodificadas da inter- CU na primeira representação de palavra de código;
[052]aplica o filtro de malha (270) às amostras decodificadas da inter-CU para gerar amostras de saída da inter-CU; e
[053]armazena as amostras de saída da inter-CU no armazenador de referência; e
[054]gera uma imagem decodificada na primeira representação de palavra de código com base em amostras de saída no armazenador de referência.
[055]Pipeline de Processamento de Entrega de Vídeo Exemplificativo
[056]A Figura 1A representa um processo exemplificativo de um pipeline de entrega de vídeo convencional (100) mostrando vários estágios desde a captura de vídeo até a exibição do conteúdo de vídeo. Uma sequência de quadros de vídeo (102) é capturada ou gerada usando o bloco de geração de imagem (105). Os quadros de vídeo (102) podem ser capturados digitalmente (por exemplo, por uma câmera digital) ou gerados por um computador (por exemplo, usando animação por computador) para fornecer dados de vídeo (107). Alternativamente, os quadros de vídeo (102) podem ser capturados em filme por uma câmera de filme. O filme é convertido para um formato digital para fornecer dados de vídeo (107). Em uma fase de produção (110), os dados de vídeo (107) são editados para fornecer um fluxo de produção de vídeo (112).
[057]Os dados de vídeo do fluxo de produção (112) são então fornecidos a um processador no bloco (115) para edição de pós-produção. A edição pós-produção do bloco (115) pode incluir ajustar ou modificar as cores ou o brilho em áreas específicas de uma imagem para melhorar a qualidade da imagem ou obter uma aparência específica para a imagem de acordo com a intenção criativa do criador do vídeo. Isso às vezes é chamado de “gradação de cores”. Outra edição (por exemplo, seleção e sequenciamento de cena, corte de imagem, adição de efeitos especiais visuais gerados por computador, etc.) pode ser realizada no bloco (115) para produzir uma versão final (117) da produção para distribuição. Durante a edição pós-produção (115), as imagens de vídeo são visualizadas em uma tela de referência (125).
[058]Após a pós-produção (115), os dados de vídeo da produção final (117) podem ser entregues no bloco de codificação (120) para entrega à jusante aos dispositivos de decodificação e reprodução, tal como aparelhos de televisão, dispositivos de conexão à internet via TV, cinemas, e similares. Em algumas modalidades, o bloco de codificação (120) pode incluir codificadores de áudio e vídeo, tal como os definidos por ATSC, DVB, DVD, Blu-Ray e outros formatos de entrega, para gerar fluxo de bits codificado (122). Em um receptor, o fluxo de bits codificado (122) é decodificado pela unidade de decodificação (130) para gerar um sinal decodificado (132) representando uma aproximação idêntica ou próxima do sinal (117). O receptor pode ser conectado a uma tela alvo (140) que pode ter características completamente diferentes da tela de referência (125). Nesse caso, um bloco de gerenciamento de tela (135) pode ser usado para mapear a faixa dinâmica do sinal decodificado (132) para as características da tela alvo (140), gerando sinal mapeado para tela (137).
Remodelagem de Sinal
[059]A Figura 1B representa um processo exemplificativo para remodelar o sinal de acordo com a técnica anterior [2]. Dados os quadros de entrada (117), um bloco de remodelagem direta (150) analisa as restrições de entrada e codificação e gera funções de mapeamento de palavras de código que mapeiam os quadros de entrada (117) para os quadros de saída requantizados (152). Por exemplo, a entrada (117) pode ser codificada de acordo com certa função de transferência eletro-óptica (EOTF) (por exemplo, gama). Em algumas modalidades, a informação sobre o processo de remodelagem pode ser comunicada para dispositivos à jusante (tal como decodificadores) usando metadados. Como usado aqui, o termo “metadados” refere- se a qualquer informação auxiliar que é transmitida como parte do fluxo de bits codificado e auxilia um decodificador a renderizar uma imagem decodificada. Tais metadados podem incluir, mas não estão limitados a, informação sobre espaço ou gama de cores, parâmetros de tela de referência, e parâmetros de sinal auxiliar, tal como os descritos aqui.
[060]Após a codificação (120) e a decodificação (130), os quadros decodificados (132) podem ser processados por uma função de remodelagem para trás (ou inversa) (160), que converte os quadros requantizados (132) de volta ao domínio EOTF original (por exemplo, gama), para processamento posterior à jusante, tal como o processo de gerenciamento de tela (135) discutido anteriormente. Em algumas modalidades, a função de remodelagem para trás (160) pode ser integrada com um dequantizador no decodificador (130), por exemplo, como parte do dequantizador em um decodificador de vídeo AVC ou HEVC.
[061]Como aqui utilizado, o termo “remodelador” pode denotar uma função de remodelagem direta ou inversa a ser usada quando codificando e / ou decodificando imagens digitais. Exemplos de funções de remodelagem são discutidos na Ref. [2] Na Ref. [2], foi proposto um método de remodelagem de imagem baseada em bloco em malha para codificação de vídeo de alta faixa dinâmica. Esse modelo permite a remodelagem baseada em bloco dentro da malha de codificação, mas a um custo de maior complexidade. Para ser específico, o modelo exige a manutenção de dois conjuntos de armazenadores de imagem decodificada: um conjunto para imagens decodificadas com remodelagem inversa (ou não remodeladas), que podem ser usadas tanto para predição sem remodelagem quanto para saída para uma tela, e outro conjunto para imagens decodificadas com remodelagem direta, que são usadas apenas para predição com remodelagem. Embora as imagens decodificadas com remodelagem direta possam ser computadas em tempo real, o custo de complexidade é muito alto, especialmente para predição inter (compensação de movimento com interpolação subpixel). Em geral, o gerenciamento de tela — imagem — armazenador (DPB) é complicado e requer uma atenção muito cuidadosa, portanto, como apreciado pelos inventores, são desejados métodos simplificados para codificação de vídeo.
[062]Na Ref. [6], foram apresentadas arquiteturas adicionais de codec baseadas em remodelagem, incluindo um remodelador externo fora de malha, uma arquitetura com um remodelador intra somente em malha, uma arquitetura com um remodelador em malha para residuais de predição, e uma arquitetura híbrida que combina remodelagem intra em malha e remodelagem inter residual. O principal objetivo dessas arquiteturas de remodelagem propostas é melhorar a qualidade visual subjetiva. Assim, muitas dessas abordagens produzirão piores métricas objetivas, em particular a bem conhecida métrica Relação Sinal - Ruído de Pico (PSNR).
[063]Nesta invenção, um novo remodelador é proposto com base na Otimização de Taxa - Distorção (RDO). Em particular, quando a métrica de distorção direcionada é MSE (Erro Quadrático Médio), o remodelador proposto melhorará a qualidade visual subjetiva e as métricas objetivas bem usadas com base em PSNR, Bjontegaard PSNR (BD-PSNR) ou Bjontegaard Rate (Taxa BD). Nota-se que qualquer uma das arquiteturas de remodelagem propostas, sem perda de generalidade, pode ser aplicada ao componente de luminância, a um ou mais dos componentes croma, ou a uma combinação de componentes luma e croma.
Remodelagem com Base na Otimização de Taxa - Distorção
[064]Considera-se um sinal de vídeo remodelado representado por uma profundidade de bits de B bits em um componente de cor (por exemplo, B = 10 para Y, Cb e /ou Cr), portanto, há um total de 2º palavras de código disponíveis. Considera- se dividir a faixa de palavras de código desejada [0 28] em N segmentos ou compartimentos, e faz-se M« representar o número de palavras de código no k-ésimo segmento ou compartimento, após um mapeamento de remodelagem, de modo que, dada uma taxa de bits alvo R, a distorção D entre a imagem de origem e a imagem decodificada ou reconstruída é mínima. Sem perda de generalidade, D pode ser expresso como uma medida da soma do erro quadrático (SSE) entre os valores de pixel correspondentes da entrada de origem (Source(i, j)) e a imagem reconstruída (Recon(i, j)) D=SSE=>,,DiffG?, (1)
onde Diff(i,j) = Source(i,j) — Recon(i,j).
[065]O problema de remodelagem com otimização pode ser reescrito como: find Mk (k = O, 1, ..., N-1), de modo que, dada uma taxa de bits R, D é mínimo, onde M, <=28,
[066]Vários métodos de otimização podem ser usados para encontrar uma solução, mas a solução ótimo pode ser muito complicada para codificação em tempo real. Nesta invenção, é proposta uma solução analítica subótima, porém mais prática.
[067]Sem perder a generalidade, considera-se um sinal de entrada representado por uma profundidade de bits de B bits (por exemplo, B = 10), em que as palavras de código são divididas uniformemente em N compartimentos (por exemplo, N = 32). Por padrão, cada compartimento é atribuído a Ma = 2º / N palavras de código (por exemplo, para N = 32 e B = 10, Ma = 32). A seguir, uma alocação mais eficiente de palavras de código, com base em RDO, será demonstrada através de um exemplo.
[068]Como aqui utilizado, o termo “faixa estreita” [CW1, CW2] denota uma faixa contínua de palavras de código entre as palavras de código CW1 e CW2, que é um subconjunto da faixa dinâmica completa [0 28º-1]. Por exemplo, em uma modalidade, uma faixa estreita pode ser definida como [16 * 2688), 235*2(8-9]], (por exemplo, para B = 10, a faixa estreita compreende valores [64 940]). Assumindo-se que a profundidade de bit do sinal de saída é Bo, se a faixa dinâmica de um sinal de entrada está dentro de uma faixa estreita, então, no que será denominado como remodelagem “padrão”, pode-se esticar o sinal para a faixa total [0 28º -1] Então, cada compartimento terá cerca de M: = CEIL((28º / (CW2-CW1)) * Ma) palavras de código ou, neste exemplo, se Bo = B = 10, Mr= CEIL((1024 / (940-64)) * 32) = 38 palavras de código, em que CElIL(x) denota a função teto, que mapeia x para o menor número inteiro que é maior ou igual a x. Sem perder a generalidade, nos exemplos abaixo,
para simplificar, assume-se que Bo = B.
[069]Para o mesmo parâmetro de quantização (QP), o efeito de aumentar o número de palavras de código em um compartimento é equivalente a alocar mais bits para codificar o sinal dentro do compartimento; portanto, é equivalente a reduzir o SSE ou melhorar o PSNR; no entanto, um aumento uniforme de alocação de palavras de código em cada compartimento pode não fornecer melhores resultados do que a codificação sem remodelagem, porque o ganho de PSNR pode não superar o aumento da taxa de bits, ou seja, essa não é uma boa compensação em termos de RDO. Idealmente, desejar-se-ia atribuir mais palavras de código apenas aos compartimentos que produzem a melhor compensação em RDO, isto é, gera uma diminuição significativa de SSE (aumento de PSNR) às custas de pouca quantidade de aumento da taxa de bits.
[070]Em uma modalidade, o desempenho de RDO é aprimorado através de um mapeamento de remodelagem adaptativo por partes. O método pode ser aplicado a qualquer tipo de sinal, incluindo sinais de faixa dinâmica padrão (SDR) e alta faixa dinâmica (HDR). Usando o caso simples anterior como um exemplo, o objetivo desta invenção é atribuir Ma ou Mr: palavras de código para cada segmento de palavra de código ou compartimento de palavras de código.
[071JEmM um codificador, considerando N compartimentos de palavras de código para o sinal de entrada, a variância média de luminância de cada compartimento pode ser aproximada da seguinte forma:
[072] Inicializar em zero a soma da variância de bloco (varvin(k)) e um contador (crin(k)) para cada compartimento, por exemplo, varvin (k) = O e coin (K)=O0, para k=0,1,..., N-1.
[073] Dividir a imagem em L * L blocos não sobrepostos (por exemplo, L = 16)
[074]- Para cada bloco de imagem, calcular o luma médio do bloco e a variância de luma do bloco i (por exemplo, Luma mean(i) e Luma var(i))
[075]- Com base no luma médio do bloco, atribuir esse bloco a um dos N compartimentos. Em uma modalidade, se Luma mean(i) está dentro do k-ésimo segmento na faixa dinâmica de entrada, a variância total de luminância de compartimento para o k-ésimo compartimento é incrementada pela variância de luma do bloco recém-atribuído, e o contador desse compartimento é aumentado em um. Ou seja, se a região do i-ésimo pixel pertence ao k-ésimo compartimento: Varvin(k) = varvin(k) + Luma var(i); (2) Coin(k) = Coin(k) + 1.
[076]- Para cada compartimento, computar a variância de luminância média para esse compartimento dividindo a soma das variâncias de bloco nesse compartimento pelo contador, assumindo-se que o contador não é igual a O; ou se Chin(k) não é O, então Varvin(k) = varvin(k)/ Coin(k) (3)
[077]UmM versado na técnica apreciaria que se possa aplicar métricas alternativas além da variância de luminância para caracterizar os sub-blocos. Por exemplo, pode-se usar o desvio padrão dos valores de luminância, uma variância de luminância ponderada ou valor de luminância, um pico de luminância, e similares.
[078]Em uma modalidade, o pseudocódigo a seguir descreve um exemplo de como um codificador pode ajustar a alocação de compartimento usando as métricas computadas para cada compartimento: For the k-th bin, if no pixels are in the bin M«=0; else if varoin(k) < THu (1) M<= M; else
M« = Ma ;// (nota: isso é para ter certeza de que cada compartimento terá pelo menos Ma palavras de código. // Alternativamente, pode-se também alocar Mat+1 palavras de código) end onde THu denota um limite superior predeterminado. Em outra modalidade, a alocação pode ser realizada da seguinte forma: For the k-th bin, if no pixels are in the bin M«=0O; else if THo < varvin(k) < TH: (2) M<= M; else M« = Ma; end onde THo e TH: denotam os limites inferior e superior predeterminados. Em outra modalidade, For the k-th bin, if no pixels are in the bin M«=0; else if varoin(k) >THL (3) M<= M; Else Mx = Ma; end onde TH. denota um limite inferior predeterminado.
[079]Os exemplos acima mostram como selecionar o número de palavras de código para cada compartimento a partir de dois números pré-selecionados Mr e Ma. Os limites (por exemplo, THu ou TH.) podem ser determinados com base na otimização de taxa - distorção, por exemplo, por meio de uma pesquisa exaustiva. Os limites também podem ser ajustados com base nos valores dos parâmetros de quantização (QP). Em uma modalidade, para B = 10, os limites podem variar entre
1.000 e 10.000.
[080]Em uma modalidade, para agilizar o processamento, um limite pode ser determinado a partir de um conjunto fixo de valores, ou seja, (2.000, 3.000, 4.000,
5.000, 5.000, 6.000, 7.000), utilizando um método de otimização Lagrangiano. Por exemplo, para cada valor TH(i) no conjunto, usando clipes de treinamento predefinidos, é possível executar testes de compressão com QP fixo, e computar valores de uma função objetiva J definida como J()=D+AR. (7)
[081]Então, o valor limite ótimo pode ser definido como o valor TH(i) no conjunto para o qual J(i) é mínimo.
[082]Em um exemplo mais geral, pode-se predefinir uma tabela de consulta (LUT). Por exemplo, na Tabela 1, a primeira linha define um conjunto de limites que dividem a faixa completa de métricas possíveis de compartimento (por exemplo, valores de varsin(k)) em segmentos, e a segunda linha define o número correspondente de palavras de código (CW) a serem atribuídas em cada segmento. Em uma modalidade, uma regra para construir tal LUT é: se a variância de compartimento é muito grande, pode ser necessário gastar muitos bits para reduzir o SSE; portanto, é possível atribuir valores de palavra de código (CW) menores que Ma. Se a variância de compartimento é muito pequena, pode-se atribuir um valor CW maior que Ma.
[083] Tabela 1: LUT exemplificativa de alocação de palavras de código com base nos limites de variância de compartimento
[084]Usando a Tabela 1, o mapeamento de limites em palavras de código pode ser gerado da seguinte maneira: For the k-th bin, if there are no pixels in the bin M«=0O; else if varvin(k) < THo M« = CWo; else if THo< varvin(k) <THi (8) M«= CW; else if THp1 < varin(k) < TH, M«= CWp; else if varin(k) > THa1 Mk = CWa; end
[085]Por exemplo, dados dois limites e três alocações de palavras de código, para B = 10, em uma modalidade, THo = 3.000, CWO = 38, TH: = 10.000, CW1=32e CW =28.
[086]Em outra modalidade, os dois limites THo e TH1 podem ser selecionados da seguinte forma: a) considerar TH um número muito grande (mesmo infinito) e selecionar THo a partir de um conjunto de valores predeterminados, por exemplo, usando a otimização RDO na equação (7). Dado THo, agora definir um segundo conjunto de valores possíveis para TH1, por exemplo, definir (10.000, 15.000, 20.000,
25.000, 30.000) e aplicar a equação (7) para identificar o valor ótimo. A abordagem pode ser executada iterativamente com um número limitado de valores limite ou até convergir.
[087]Pode-se notar que, depois de alocar palavras de código para compartimentos de acordo com qualquer um dos esquemas definidos anteriormente, a soma dos valores de M« pode exceder o máximo de palavras de código disponíveis (28) ou existem palavras de código não utilizadas. Se houver palavras de código não utilizadas, pode-se simplesmente decidir não fazer nada, ou alocá-las para compartimentos específicos. Por outro lado, se o algoritmo atribuiu mais palavras de código do que as disponíveis, pode-se reajustar os valores de Mx, por exemplo, re- normalizando os valores de CW. Alternativamente, pode-se gerar a função de remodelagem direta usando os valores Mx existentes, mas então reajustar o valor de saída da função de remodelagem escalonando com (ExM,)/2º. Exemplos de técnicas de realocação de palavras de código também são descritos na Ref. [7].
[088]A Figura 4 representa um processo exemplificativo para alocar palavras de código para o domínio de remodelagem de acordo com a técnica RDO descrita anteriormente. Na etapa 405, a faixa dinâmica remodelada desejada é dividida em N compartimentos. Após a imagem de entrada ser dividida em blocos não sobrepostos (etapa 410), para cada bloco:
[089]A etapa 415 computa suas características de luminância (por exemplo, média e variância)
[090]A etapa 420 atribui cada bloco de imagem a um dos N compartimentos
[091]A etapa 425 computa a variância de luminância média em cada compartimento.
[092]Dados os valores computados na etapa 425, na etapa 430, a cada compartimento é atribuído um número de palavras de código de acordo com um ou mais limites, por exemplo, usando qualquer um dos algoritmos de alocação de palavras de código representados nas equações (4) a (8). Finalmente, na etapa (435), a alocação de palavras de código final pode ser usada para gerar função de remodelagem direta e / ou função de remodelagem inversa.
[093]Em uma modalidade, como um exemplo e sem limitação, a LUT direta (FLUT) pode ser construída usando o código C a seguir. tot cw = 2º; hist lens = tot cw/N; for (i= 0; i <N; i++) ( double temp = (double) M[i] / (double)hist lens; //M[i] corresponds to Mx for (| = 0; j < hist lens; j++) ( CW bins LUT allfi*hist lens + j] = temp; ) ) Y LUT alllo]) = CW bins LUT all[o]; for (i=1;i <tot cw; i++) ( Y LUT allfliy=Y LUT all [|-1] + CW bins LUT alli]; + for (i = 0; i < tot cw; i++) ( FLUTI[I] = Clip3(0, tot cw - 1, (Int(Y LUT all[i] + 0.5)); +
[094]Em uma modalidade, a LUT inversa pode ser construída da seguinte maneira: low = FLUT[O]; high = FLUT[tot cw - 1]; first = O; last = tot cw -1;
for (i=1;i<tot cw; i++) if (FLUT[O] < FLUT[I]) ( first=i-1; break; + for (i=tot cw-2;i>=0;i--) if (FLUT[tot cw - 1] > FLUT[I]) t last=i+1; break; ) for (i= 0; i <tot cw; i++) ( if (1 <= low) ( ILUT[i] = first; ) else if (i >= high) ( ILUT[i] = last; ) else t for (| = 0; j <tot cw -1;j++) if (FLUT[j]>=i) (
ILUT[] = j; break; + + +
[095]JEmM termos de sintaxe, pode-se reutilizar a sintaxe proposta em aplicações anteriores, tal como o modo polinomial por partes ou o modelo paramétrico nas Referências [5] e [6]. A Tabela 2 mostra um exemplo para N = 32 para a equação (4).
[096]Tabela 2: Sintaxe de remodelagem usando um primeiro modelo paramétrico reshaping model Descritor reshaper model profile e ue(v reshaper model scale idx u(2) reshaper model min bin idx u(s reshaper model max bin idx u(5 for (i = reshaper model min bin idx;i <= reshaper model max bin idx; i++) ( reshaper model bin profile delta |[i u(1) onde,
[097]reshaper model profile type especifica o tipo de perfil a ser usado no processo de construção de remodelador. Um determinado perfil pode fornecer informação sobre os valores padrão que estão sendo usados, tal como o número de compartimentos, a importância do compartimento padrão ou os valores de prioridade, e as alocações de palavras de código padrão (por exemplo, valores Ma e / ou M1).
[098]reshaper model scale idx específica o valor do índice de um fator de escala (denotado como ScaleFactor) a ser usado no processo de construção de remodelador. O valor do ScaleFactor permite um controle aprimorado da função de remodelagem para melhorar a eficiência geral da codificação.
[099]reshaper model min bin idx específica o índice mínimo de compartimento a ser usado no processo de construção de remodelador. O valor de reshaper model min bin idx deve estar na faixa de O a 31, inclusive.
[0100]reshaper model max bin idx específica o índice máximo de compartimento a ser usado no processo de construção de remodelador. O valor de reshaper model max bin idx deve estar na faixa de O a 31, inclusive.
[0101]reshaper model bin profile delta [ i ] especifica o valor delta a ser usado para ajustar o perfil do i-ésimo compartimento no processo de construção de remodelador. O valor de reshaper model bin profile delta [i] deve estar na faixa de 0 a 1, inclusive.
[0102]A Tabela 3 representa outra modalidade com uma representação de sintaxe alternativa, mais eficiente.
[0103]Tabela 3: Sintaxe de remodelagem usando um segundo modelo paramétrico reshaping model Descritor reshaper model profile type reshaper model scale idx reshaper model min bin idx ue(v reshaper model delta max bin idx ue(v) reshaper model num cw minus1 u(1 for (i = 0; i < reshaper model num cw minus1 + 1; i++ LL reshaper model delta abs CW|[i u(5 if ( reshaper model delta abs CW >0) reshaper model delta sign CW|[i u(1 for (i = reshaper model min bin idx; i <= reshaper model max bin idx; i++ reshaper model bin profile delta [i] u(v)
[0104]onde,
[0105]reshaper model delta max bin idx é definido como igual ao índice máximo de compartimento permitido (por exemplo, 31) menos o índice máximo de compartimento a ser usado no processo de construção de remodelador.
[0106]reshaper model num cw minus1 mais 1 específica o número de palavras de código a serem sinalizadas.
[0107]reshaper model delta abs CW [i] específica o i-ésimo valor de palavra de código delta absoluto.
[0108]reshaper model delta sign CW [i] especifica o sinal para a i-ésima palavra de código delta.
[0109]Então: [01 10]reshaper model delta CW [ i ] = (1-2 * reshaper model delta sign CW [i]) * reshaper model delta abs CW |[i];
[0111]reshaper model CW [1] = 32 + reshaper model delta CW [i].
[0112]reshaper model bin profile delta [ i ] específica o valor delta a ser usado para ajustar o perfil do irésimo compartimento no processo de construção de remodelador. O valor de reshaper model bin profile delta [i] deve estar na faixa de O a 1 quando reshaper model num cw minus1 for igual a O. O valor de reshaper model bin profile delta [ i ] deve estar na faixa de 0 a 2 quando reshaper model num cw minus1 é igual a 1.
[0113]CW = 32 quando reshaper model bin profile delta [ i ] for definido como igual a o, CW = reshaper model CW [o] quando reshaper model bin profile delta [ i ] for definido como igual a 1; CW = reshaper model CW [1] quando reshaper model bin profile delta [ i ] for definido como igual a 2. Em uma modalidade, reshaper model num cw minus1 pode ser maior do que 1, permitindo que reshaper model num cw minus1 e reshaper model num cw minus1 e reshaper model bin profile delta [ i ] sejam sinalizados com ue(v) para codificação mais eficiente.
[0114]Em outra modalidade, como descrito na Tabela 4, o número de palavras de código por compartimento pode ser definido explicitamente.
0115]Tabela 4: Sintaxe de remodelagem usando um terceiro modelo for (i = reshaper model min bin idx;i <= reshaper model max bin idx; i++) (
A
[0116]reshaper model number bins minus1i mais 1 específica o número de compartimentos usados para o componente luma. Em algumas modalidades, pode ser mais eficiente que o número de compartimentos seja uma potência de dois. Em seguida, o número total de compartimentos pode ser representado por sua representação log2, por exemplo, usando um parâmetro alternativo como log2 reshaper model number bins minus1. Por exemplo, para 32 compartimentos
[0117]log2 reshaper model number bins minus1 = 4.
[0118]reshaper model bin delta abs cw prec minus1 mais 1 especifica o número de bits usados para a representação da sintaxe reshaper model bin delta abs CW [i].
[0119]reshaper model bin delta abs CW [i] especifica o valor absoluto da palavra de código delta para o i-ésimo compartimento.
[0120]reshaper model bin delta sign CW flag [ i | especifica o sinal de reshaper model bin delta abs CW [i] da seguinte maneira:
[0121]- Se reshaper model bin delta sign CW flag [ i |] for igual a 0, a variável correspondente RepDeltaCW [ i ] tem um valor positivo.
[0122]- Caso contrário (reshaper model bin delta sign CW flag [i] não é igual a O), a variável correspondente RespDeltaCW [i ] tem um valor negativo.
[0123] Quando reshaper model bin delta sign CW flag [ i ] não estiver presente, ele é inferido como sendo igual a O.
[0124]A variável RspDeltaCW [ i ] = (1 - 2 * reshaper model bin delta sign CW [i]) * reshaper model bin delta abs CW|[i];
[0125]A variável OrgCW é definida como igual a (1 << BitDepthy) / (reshaper model number bins minus1 + 1);
[0126]A variável RspCW [i ] é derivada da seguinte maneira:
[0127]se reshaper model min bin idx <= i <= reshaper model max bin idx
[0128]então RsepCW [ i ]| = Org CW + RspDeltaCW [i].
[0129]caso contrário, RsSpocW [i]=0,
[0130]Em uma modalidade, assumindo-se a alocação de palavras de código de acordo com um dos exemplos anteriores, por exemplo, a equação (4), um exemplo de como definir os parâmetros na Tabela 2, compreende:
[0131]Primeiro, assume-se que se atribui “importância de compartimento” da seguinte maneira: For the k-th bin, if Mx=O0; bin importance = O; else if M== M bin importance = 2; (4) else bin importance = 1; end
[0132]Como usado aqui, o termo “importância de compartimento” é um valor atribuído a cada um dos N compartimentos de palavras de código para indicar a importância de todas as palavras de código nesse compartimento no processo de remodelagem em relação a outros compartimentos.
[0133]EmM uma modalidade, pode-se definir default bin importance de reshaper model min bin idx para reshaper model max bin idx como 1. O valor de reshaper model min bin idx é definido como o menor índice de compartimento que tem Mr“ diferente de 0. O valor de reshaper model max bin idx é definido como o maior índice de compartimento que tem M". diferente de O. reshaper model bin profile delta para cada compartimento dentro de [reshaper model min bin idx reshaper model max bin idx] é a diferença entre bin importance e default bin importance.
[0134]UmM exemplo de como usar o modelo paramétrico proposto para construir uma LUT de remodelagem direta (FLUT) e uma LUT de remodelagem inversa (ILUT) é mostrado a seguir.
[0135]1) Divida a faixa de luminância em N compartimentos (por exemplo, N =32)
[0136]2) Derivar o índice de importância do compartimento para cada compartimento a partir da sintaxe. Por exemplo: For the k-th bin, if reshaper model min bin idx <= k <= reshaper model max bin idx bin importancel|[k] = default bin importance|[k] + reshaper model bin profile delta [kK]; else bin importancel[k] = O;
[0137]3) Pré-atribuir automaticamente palavras de código com base na importância do compartimento: for the k-th bin, if bin importance[k] == O M«=0O; else if bin importance[k] == 2 M«<= M; else M«= Ma; end
[0138]4) Construir LUT de remodelagem direta com base na atribuição de palavras de código para cada compartimento, acumulando a palavra de código atribuída a cada compartimento. A soma deve ser menor ou igual ao orçamento total de palavras de código (por exemplo, 1024 para a faixa total de 10 bits). (Por exemplo, consultar o código C anterior).
[0139]5) Construir LUT de remodelagem inversa (por exemplo, consultar o código C anterior).
[0140]A partir do ponto de vista de sintaxe, métodos alternativos também podem ser aplicados. A chave é especificar o número de palavras de código em cada compartimento (por exemplo, Mx, para k = 0, 1, 2,..., N-1), explícita ou implicitamente. Em uma modalidade, pode-se especificar explicitamente o número de palavras de código em cada compartimento. Em outra modalidade, pode-se especificar as palavras de código diferencialmente. Por exemplo, o número de palavras de código em um compartimento pode ser determinado usando a diferença do número de palavras de código no compartimento atual e no compartimento anterior (por exemplo, M Delta (k) = M (k) - M (k-1)). Em outra modalidade, pode-se especificar o número de palavras de código mais comumente usado (por exemplo, Mv) e expressar o número de palavras de código em cada compartimento como a diferença do número de palavras de código em cada compartimento a partir desse número (por exemplo, M Delta (k) = M (k) - Mv).
[0141]Em uma modalidade, dois métodos de remodelagem são suportados. Um é denotado como o “remodelador padrão”, em que Ms: é atribuído a todos os compartimentos. O segundo, denotado como “remodelador adaptativo”, aplica o remodelador adaptativo descrito anteriormente. Os dois métodos podem ser sinalizados para um decodificador como na Ref. [6] usando um sinalizador especial, por exemplo, sps reshaper adaptive flag (por exemplo, usar sps reshaper adaptive flag = O para o remodelador padrão e usar sps reshaper adaptive flag = 1) para o remodelador adaptativo.
[0142]A invenção é aplicável a qualquer arquitetura de remodelagem proposta na Ref. [6], tal como: um remodelador externo, remodelador intra somente em malha, remodelador de residuais em malha, ou remodelador híbrido em malha. Como um exemplo, a Figura 2A e 2B representam arquiteturas exemplificativas para remodelagem híbrida em malha de acordo com modalidades desta invenção. Na Figura 2A, a arquitetura combina elementos de uma arquitetura de remodelagem intra somente em malha (parte superior da figura) e uma arquitetura residual em malha (parte inferior da figura). Sob essa arquitetura, para fatias internas, a remodelagem é aplicada aos pixels da imagem, enquanto nas fatias intra, a remodelagem é aplicada aos residuais de predição. No codificador (200 E), dois novos blocos são adicionados a um codificador tradicional baseado em bloco (por exemplo, HEVC): um bloco (205) para estimar a função de remodelagem direta (por exemplo, de acordo com a Figura 4), o bloco de remodelagem de imagem direta (210-1), e o bloco de remodelagem de residual direta (210-2), que aplica a remodelagem direta a um ou mais dos componentes de cor do vídeo de entrada (117) ou residuais de predição. Em algumas modalidades, essas duas operações podem ser executadas como parte de um único bloco de remodelagem de imagem. Os parâmetros (207) relacionados à determinação da função de remodelagem inversa no decodificador podem ser passados para o bloco de codificador sem perdas do codificador de vídeo (por exemplo, CABAC 220) para que eles possam ser incorporados no fluxo de bits codificado (122). No modo intra, a predição intra (225-1), a transformação e a quantização (T & Q) e a transformação inversa e a quantização inversa (Q' & T') usam imagens remodeladas. Nos dois modos, as imagens armazenadas no DPB (215) estão sempre no modo de remodelagem inversa, o que requer um bloco de remodelagem de imagem inversa (por exemplo, 265-1) ou um bloco de remodelagem de residual inversa (por exemplo, 265-2) antes do filto de malha (270-1, 270-2). Como representado na Figura 2A, um comutador de fatia Intra / Inter permite alternar entre as duas arquiteturas, dependendo do tipo de fatia a ser codificado. Em outra modalidade, a filtragem em malha para fatias Intra pode ser realizada antes da remodelagem inversa.
[0143]No decodificador (200 D), os seguintes novos blocos normativos são adicionados a um decodificador tradicional baseado em blocos: um bloco (250) (decodificação de remodelador) para reconstruir uma função de remodelagem direta e uma função de remodelagem inversa com base nos parâmetros de função de remodelagem codificados (207), um bloco (265-1) para aplicar a função de remodelagem inversa aos dados decodificados, e um bloco (265-2) para aplicar tanto a função de remodelagem direta quanto a função de remodelagem inversa para gerar o sinal de vídeo decodificado (162). Por exemplo, em (265-2), o valor reconstruído é dado por Rec = ILUT(FLUT (Pred) + Res), em que FLUT denota a LUT de remodelagem direta e ILUT denota a LUT de remodelagem inversa.
[0144]Em algumas modalidades, as operações relacionadas aos blocos 250 e 265 podem ser combinadas em um único bloco de processamento. Como representado na Figura 2B, um comutador de fatia Intra / Inter permite alternar entre os dois modos, dependendo dos tipos de fatia nas imagens de vídeo codificadas.
[0145]A Figura 3A representa um processo exembplificativo (300 E) para codificar vídeo usando uma arquitetura de remodelagem (por exemplo, 200 E) de acordo com uma modalidade desta invenção. Se não houver remodelagem ativada (caminho 305), a codificação (335) prossegue como é conhecido nos codificadores da técnica anterior (por exemplo, HEVC). Se a remodelagem estiver ativada (caminho 310), então um codificador pode ter as opções de aplicar uma função de remodelagem predeterminada (padrão) (315) ou determinar de forma adaptativa uma nova função de remodelagem (325) com base em uma análise de imagem (320) (por exemplo, conforme descrito na Figura 4). Após a codificação de uma imagem usando uma arquitetura de remodelagem (330), o restante da codificação segue as mesmas etapas que o pipeline de codificação tradicional (335). Se a remodelagem adaptativa (312) for empregada, os metadados relacionados à função de remodelagem são gerados como parte da etapa “Remodelador de Codificação” (327).
[0146]A Figura 3B representa um processo exemplificativo (300 D) para decodificar vídeo usando uma arquitetura de remodelagem (por exemplo, 200 D) de acordo com uma modalidade desta invenção. Se não houver reformulação ativada (caminho 340), depois de decodificar uma imagem (350), os quadros de saída são gerados (390) como em um pipeline de decodificação tradicional. Se a remodelagem estiver ativada (caminho 360), então o decodificador determina se deve ser aplicada uma função de remodelagem predeterminada (padrão) (375), ou se deve determinar de forma adaptativa a função de remodelagem (380) com base nos parâmetros recebidos (por exemplo, 207). Após a decodificação usando uma arquitetura de remodelagem (385), o restante da decodificação segue o pipeline de decodificação tradicional.
[0147]Como descrito na Ref. [6] e anteriormente nesta especificação, a LUT de remodelagem direta FwdLUT pode ser construída por integração, enquanto a LUT de remodelagem inversa pode ser construída com base em um mapeamento inverso usando a LUT de remodelagem direta (FWdLUT). Em uma modalidade, a LUT direta pode ser construída usando interpolação linear por partes. No decodificador, a remodelagem inversa pode ser feita usando a LUT inversa diretamente ou novamente por interpolação linear. A LUT linear por partes é construída com base em pontos pivô de entrada e pontos pivô de saída.
[0148]Faz-se (X1, Y1), (X2, Y2) dois pontos pivô de entrada e seus valores de saída correspondentes para cada compartimento. Qualquer valor de entrada X entre X1 e X2 pode ser interpolado pela seguinte equação: Y = ((Y2-Y1) / (K2-X1)) * (XX1) + Y1.
[0149]EmM uma implementação de ponto fixo, a equação acima pode ser reescrita como Y=((m* X+2FPPRECI) >> FP PREC)+c onde m e c denotam o escalar e o deslocamento para interpolação linear e FP PREC é uma constante relacionada à precisão de ponto fixo.
[0150]Como um exemplo, FwdLUT pode ser construída da seguinte maneira: Faz-se a variável lutSize = (1 << BitDepthY).
Faz-se as variáveis binNum = reshaper model number bins minus1 + 1, e binLen = lutSize / binNum.
[0151]Para o i-ésimo compartimento, seus dois pivôs de bracketing (por exemplo, X1 e X2) podem ser derivados como X1 = i * binLen e X2 = (i + 1) * binLen. Então: binsLUT[0]=O0; for(i = 0; i < reshaper model number bins minus1 + 1; i++) ( binsLUT| (i + 1) * binLen] = binsLUT[i*binLen] + RepoWIi ]; Y1 = binsLUT[i*binLen]; Y2 = binsLUT[(i + 1)*binLen]; scale = ((Y2 - Y1) * (1 << FP PREC) + (1 << (log2(binLen)- 1))) >> (log2(binLen)); for (| = 1; j < binLen; j++) ( binsLUT[i*binLen + j] = Y1 + ((scale *j + (1 <<(FP PREC -1)))>> FP PREC); ) )
[0152]FP PREC define a precisão de ponto fixo da parte fracionária das variáveis (por exemplo, FP PREC = 14). Em uma modalidade, binsLUT[] pode ser computado com maior precisão do que a precisão de FwdLUT. Por exemplo, os valores de binsLUT[] podem ser computados como números inteiros de 32 bits, mas FwdLUT pode ser os valores de binsLUT cortados em 16 bits.
Derivação de Limite Adaptativo
[0153]Como descrito anteriormente, durante a remodelagem, a alocação de palavras de código pode ser ajustada usando um ou mais limites (por exemplo, TH, THu, TH. e similares). Em uma modalidade, esses limites podem ser gerados de forma adaptativa com base nas características de conteúdo. A Figura 5 representa um processo exemplificativo para derivar esses limites de acordo com uma modalidade.
[0154]Na etapa 505, a faixa de luminância de uma imagem de entrada é dividida em N compartimentos (por exemplo, N = 32). Por exemplo, faz-se N também ser denotado como PIC ANALYZE CW BINS.
[0155]Na etapa 510, é feita uma análise de imagem para calcular características de luminância para cada compartimento. Por exemplo, pode-se calcular a porcentagem de pixels em cada compartimento (a ser denotada como BinHist [b], b = 1, 2,..., N), onde
[0156]BinHist [b] = 100 * (total de pixels no compartimento b) / (total de pixels na imagem), (10)
[0157]Como discutido anteriormente, outra boa métrica das características de imagem é a variância média (ou desvio padrão) de pixels em cada compartimento, a ser denotada como BinVar [b]. BinVar [b] pode ser computado no “modo de bloco” como varnsin(k) nas etapas descritas na seção que conduz às equações (2) e (3). Alternativamente, o cálculo baseado em bloco pode ser refinado com cálculos baseados em pixels. Por exemplo, denota-se como vf(i) a variância associada a um grupo de pixels em torno do i-ésimo pixel em uma janela vizinha de m x m (por exemplo, m = 5) com o i-ésimo pixel no centro. Por exemplo, se nO = Erh x, (11)
[0158]denota o valor médio de pixels em uma janela Wn = m * m (por exemplo, m= 5) em torno do i-ésimo pixel com o valor x(i), então vfG) = ERA GO - nO. (12)
[0159]UmM mapeamento não linear opcional, tal como vf(i) = log10 (vf(i) +1), pode ser usado para suprimir a faixa dinâmica dos valores de variância bruta. Então, o fator de variância pode ser usado no cálculo da variância média em cada compartimento como BinVarl[b] = EM ví, (13) onde Kçp indica o número de pixels no compartimento b.
[0160]Na etapa 515, as variâncias médias no compartimento (e seus índices correspondentes) são classificadas, por exemplo, e sem limitação em ordem decrescente. Por exemplo, os valores BinVar classificados podem ser armazenados em BinVarSortDsd[b] e os índices de compartimento classificados podem ser armazenados em BinldxSortDsd[b]. Como um exemplo, usando o código C, o processo pode ser descrito como: for (int b = 0; b < PIC ANALYZE CW BINS; b++ 1/ initialize (unsorted) ( BinVarSortDsd[b] = BinVarlb]; BinldxSortDsdl[b] = b; ) //sort (see example code in Appendix 1) bubbleSortDsd(BinVarSortDsd, BinldxSortDsd, PIC ANALYZE CW BINS);
[0161]UmM gráfico exemplificativo de fatores de variância média de compartimento classificados é representado na Figura 6A.
[0162]4) Dados os valores de histograma do compartimento computados na etapa 510, na etapa 520, computa-se e armazena-se uma função de densidade cumulativa (CDF) de acordo com a ordem das variâncias médias de compartimento classificadas. Por exemplo, se a CDF é armazenada na matriz BinVarSortDsdCDFIb], em uma modalidade: BinVarSortDsdCDF|[0] = BinHist[BinldxSortDsd[0]]; for (intb=1;b < PIC ANALYZE CW BINS; b++) ( BinVarSortDsdCDF|[b] = BinVarSortDsdCDF|b - 1] + BinHist[BinldxSortDsd|[b]]; )
[0163]Um gráfico exemplificativo (605) de uma CDF computada, com base nos dados da Figura 6A, é representado na Figura 6B. Os pares de valores CDF versus variâncias médias de compartimento classificadas: (x = BinVarSortDsd[b], y = BinVarSortDsdCDF|[b]), podem ser interpretadas como: “existem y % pixels na imagem com variância maior ou igual a x” ou “existem (100 - y)% de pixels na imagem com variância menor do que x”.
[0164]Finalmente, na etapa 525, dado o CDF BinVarSortDsdCDF [BinVarSortDsd[b]] como uma função dos valores médios de variância de compartimento classificados, pode-se definir limites com base nas variâncias de compartimento e nas porcentagens acumuladas.
[0165]Os exemplos para determinar um único limite ou dois limites são mostrados na Figura 6C e 6D, respectivamente. Quando apenas um limite está sendo usado (por exemplo, TH), TH pode ser definido como “a variância média em que k % dos pixels têm vf = TH". Então, TH pode ser calculado encontrando-se a interseção do gráfico CDF (605) em k % (por exemplo, 610) (por exemplo, o valor BinVarSortDsd[b] em que BinVarSortDsdCDF = k %); Por exemplo, como representado na Figura 6C, para k = 50, TH = 2,5. Em seguida, pode-se atribuir Mr palavras de código para compartimentos tendo BinVar [b] <TH e Ma palavras de código para compartimentos tendo BinVar [b] = TH. Como regra geral, é preferencial atribuir um número maior de palavras de código a compartimentos com menor variância (por exemplo, M:> 32 > Ma, para sinal de vídeo de 10 bits com 32 compartimentos).
[0166] Quando usando dois limites, um exemplo de seleção de TH. e THu é representado na Figura 6D. Por exemplo, sem perda de generalidade, TH. pode ser definido como a variância em que 80% dos pixels têm vf = TH. (então, neste exemplo, TH. = 2,3), e THu pode ser definido como a variância em que 10% de todos os pixels têm vf = THu (então, neste exemplo, THu = 3,5). Dados esses limites, pode-se atribuir M: palavras de código para compartimentos tendo BinVar[b] < THL e Ma palavras de código para compartimentos tendo BinVar[lb] = THu. Para compartimentos tendo BinVar entre TH. e THu, pode-se usar os números originais de palavras de código por compartimento (por exemplo, 32 para B = 10).
[0167]As técnicas acima podem ser facilmente estendidas para casos com mais de dois limites. A relação também pode ser usada para ajustar o número de palavras de código (Mr, Ma, etc.). Como regra geral, em compartimentos de baixa variância, deve-se atribuir mais palavras de código para aumentar o PSNR (e reduzir o MSE); para compartimentos de alta variância, deve-se atribuir menos palavras de código para economizar bits.
[0168]Em uma modalidade, se o conjunto de parâmetros (por exemplo, TH., THu, Ma, M: e similares) fosse obtido manualmente para conteúdo específico, por exemplo, através de um ajuste manual exaustivo de parâmetros, esse método automático pode ser aplicado para projetar um árvore de decisão para categorizar cada conteúdo em ordem para definir automaticamente os parâmetros manuais ótimos. Por exemplo, as categorias de conteúdo incluem: filme, televisão, SDR, HDR, desenhos animados, natureza, ação e similares.
[0169]Para reduzir a complexidade, a remodelagem em malha pode ser restringida usando uma variedade de esquemas. Se a remodelagem em malha for adotada em um padrão de codificação de vídeo, essas restrições deverão ser normativas para garantir simplificações do decodificador. Por exemplo, em uma modalidade, a remodelagem de luma pode ser desativada para certos tamanhos de codificação de bloco. Por exemplo, pode-se desativar o modo de remodelador intra e inter em uma fatia inter quando nTbW * nTbH < TH, em que a variável nNTbW especifica a largura do bloco de transformação e a variável nNTbH especifica a altura do bloco de transformação. Por exemplo, para TH = 64, os blocos com os tamanhos 4 x4,4x8e 8 x 4 são desativados para remodelagem de modos intra e inter em fatias inter- codificadas (ou blocos).
[0170]Da mesma forma, em outra modalidade, pode-se desabilitar a escala de residuais croma baseados em luma no modo intra em fatias (ou recortes) inter- codificadas, ou quando se tem árvores de partição de luma e croma separadas.
Interação Com Outras Ferramentas de Codificação Filtragem de Malha
[0171]Na Ref. [6], foi descrito que um filtro de malha pode operar no domínio de pixel original ou no domínio de pixel remodelado. Em uma modalidade, é sugerido que a filtagem de malha seja realizada no domínio de pixel original (após a remodelagem da imagem). Por exemplo, em uma arquitetura híbrida de remodelagem em malha (200 E e 200 D), para imagem intra, será necessário aplicar a remodelagem inversa (265-1) antes do filtro de malha (270-1).
[0172]A Figura 2C e a Figura 2D representam arquiteturas de decodificador alternativas (200B D e 200C D) em que a remodelagem inversa (265) é realizada após a filtragem de malha (270), imediatamente antes de armazenar os dados decodificados no armazenador de imagem decodificada (DPB) (260). Nas modalidades propostas, comparadas à arquitetura em 200 D, a fórmula de remodelagem inversa de residuais para fatias inter é modificada, e a remodelagem inversa (por exemplo, através de uma função INvLUT() ou tabela de consulta) é executada após a filtragem de malha (270). Dessa maneira, a remodelagem inversa é realizada para as fatias intra e inter após a filtragem de malha, e os pixels reconstruídos antes da filtragem de malha para a CU intra-codificada e a CU inter- codificada estão no domínio remodelado. Após a remodelagem inversa (265), as amostras de saída armazenadas no DPB de referência estão todas no domínio original. Essa arquitetura permite a adaptação baseada em fatias e a adaptação baseada em CTU para a remodelagem em malha.
[0173]Como representado na Figura 2C e na Figura 2D, em uma modalidade, a filtragem de malha (270) é realizada no domínio remodelado tanto para CUs intra- codificadas quanto para CUs inter-codificadas, e a remodelagem inversa da imagem (265) ocorre apenas uma vez, apresentando uma arquitetura unificada e mais simples tanto para CUs intra-codificadas quanto para CUs inter-codificadas.
[0174]Para decodificar CUs intra-codificadas (200B D), a predição Intra (225) é realizada em pixels vizinhos remodelados. Dado o residual Res, e uma amostra predita PredSample, a amostra reconstruída (227) é derivada como: RecSample = Res + PredSample. (14)
[0175]Dadas as amostras reconstruídas (227), a filtragem de malha (270) e a remodelagem inversa da imagem (265) são aplicadas para derivar amostras RecSamplelnDPB para serem armazenadas no DPB (260), onde RecSamplelnDPB = InvLUT (LPF (RecSample))) = = InvLUT (LPF (Res + PredSample))), (15) onde InvLUT() denota a função de remodelagem inversa ou a tabela de consulta de remodelagem inversa e LPF() denota as operações de filtragem de malha.
[0176]Na codificação tradicional, as decisões de modos inter / intra são baseadas no cálculo de uma função de distorção (dfunc()) entre as amostras originais e as amostras preditas. Exemplos de tais funções incluem a soma dos erros quadráticos (SSE), a soma das diferenças absolutas (SAD), e outras. Ao usar a remodelagem, no lado do codificador (não mostrado), a predição da CU e a decisão de modo são executadas no domínio remodelado. Ou seja, para decisão de modo, distortion = dfunc (FwdLUT (SrcSample) -RecSample), (16) onde FwadLUT() indica a função de remodelagem direta (ou LUT) e SreSample indica as amostras de imagem originais.
[0177]Para CUs inter-codificadas, no lado do decodificador (por exemplo, 200C D), a predição inter é realizada usando imagens de referência no domínio não remodelado no DPB. Em seguida, no bloco de reconstrução 275, os pixels reconstruídos (267) são derivados como: RecSample = (Res + FwdLUT (PredSample)). (17)
[0178]Dadas as amostras reconstruídas (267), a filtragem de malha (270) e a remodelagem inversa da imagem (265) são aplicadas para derivar amostras RecSamplelnDPB a serem armazenadas no DPB, onde RecSamplelnDPB = InvLUT(LPF(RecSample))) = INnvLUT(LPF( Res + FwdLUT(PredSample)))). (18)
[0179]No lado do codificador (não mostrado), a predição intra é realizada no domínio remodelado como Res = FwdLUT (SrcSample) - PredSample, (19a)
[0180]Supondo-se que todas as amostras vizinhas (PredSample) usadas para a predição já estejam no domínio remodelado. A predição inter (por exemplo, usando compensação de movimento) é realizada no domínio não remodelado (ou seja, usando imagens de referência diretamente do DPB), ou seja, PredSample = MC(RecSampleinDPB), (5b) onde MCY() denota a função de compensação de movimento. Para estimativa de movimento e decisão no modo rápido, onde o residual não é gerado, é possível computar a distorção usando distortion = dfunc (SreSample-PredSample).
[0181]No entanto, para a decisão de modo completo em que o residual é gerado, a decisão de modo é executada no domínio remodelado. Ou seja, para a decisão de modo completo, distortion = dfunc (FwdLUT (SrcSample) - RecSample). (20) Adaptação ao Nível de Bloco
[0182]Conforme explicado anteriormente, o remodelador em malha proposto permite que a remodelagem seja adaptada no nível da CU, por exemplo, para definir a variável CU reshaper para on ou off, conforme necessário. Sob a mesma arquitetura, para uma CU codificada, quando CU reshaper = off, os pixels reconstruídos precisam estar no domínio remodelado, mesmo se o sinalizador CU reshaper estiver off para essa CU inter-codificada.
RecSample = FwdLUT (Res + PredSample), (21) de modo que a predição intra sempre tenha pixels vizinhos no domínio remodelado. Os pixels do DPB podem ser derivados como: RecSamplelnDPB = InvLUT (LPF (RecSample))) = = InvLUT (LPF (FwdLUT (Res + PredSample))). (22)
[0183]Para uma CU intra-codificada, dependendo do processo de codificação, dois métodos alternativos são propostos:
[0184]1) Todas as CUs intra-codificadas são codificadas com CU reshaper = on. Nesse caso, nenhum processamento adicional é necessário porque todos os pixels já estão no domínio remodelado.
[0185]2) Algumas CUs intra-codificadas podem ser codificadas usando CU reshaper = off. Nesse caso, para CU reshaper = off, ao aplicar a predição intra, é necessário aplicar a remodelagem inversa aos pixels vizinhos, de modo que a predição seja realizada no domínio original e os pixels reconstruídos finais precisem estar no domínio remodelado, ou seja, RecSample = FwdLUT (Res + InvLUT (PredSample)), (23) então RecSamplelnDPB = InvLUT (LPF (RecSample))) = = InvLUT (LPF (FwdLUT (Res + InvLUT (PredSample))))). (24)
[0186]Em geral, as arquiteturas propostas podem ser usadas em uma variedade de combinações, tal como remodelagem intra apenas em malha, remodelagem em malha apenas para residuais de predição, ou uma arquitetura híbrida que combina remodelagem intra, em malha e remodelagem inter residual. Por exemplo, para reduzir a latência no pipeline de decodificação de hardware, para decodificação de fatias inter, pode-se realizar predição intra (isto é, decodificar CUs intra em uma fatia inter) antes da remodelagem inversa. Uma arquitetura exemplificativa (200D D) de tal modalidade é representada na Figura 2E. No módulo de reconstrução (285), para CUs Inter (por exemplo, o Mux permite a saída de 280 e 282), a partir da equação (17), RecSample = (Res + FwdLUT (PredSample)).
onde FwdLUT (PredSample) denota a saída do preditor inter (280) seguido pela reformulação direta (282). Caso contrário, para CUs Intra (por exemplo, o Mux permite a saída de 284), a saída do módulo de reconstrução (285) é RecSample = (Res + IPredSample), onde /PredSample denota a saída do bloco de Predição Intra (284). O bloco de remodelagem inversa (265-3) gera Ycu= InvLUT [RecSample].
[0187]A aplicação de predição intra para fatias inter no domínio remodelado também é aplicável a outras modalidades, incluindo aquelas representadas na Figura 2C (onde a remodelagem inversa é realizada após a filtragem de malha) e a Figura 2D. Em todas essas modalidades, cuidados especiais precisam ser tomados no modo combinado de predição inter / intra (isto é, quando durante a reconstrução, algumas amostras são de blocos inter-codificados e outras são de blocos intra-codificados), uma vez que a predição inter é no domínio original, mas a predição intra é no domínio remodelado. Ao combinar dados de unidades inter-preditas e intra-preditas, a predição pode ser realizada em qualquer um dos dois domínios. Por exemplo, quando o modo combinado de predição inter / intra é realizado no domínio remodelado, então PredSampleCombined = PredSampelntra + FwdLUT (PredSamplelnter) RecSample = Res + PredSampleCombined, isto é, as amostras inter-codificadas no domínio original são remodeladas antes da adição. Caso contrário, quando o modo combinado de predição inter / intra for realizado no domínio original, então: PredSampleCombined = InvLUT (PredSampelntra) + PredSamplelnter RecSample = Res + FwdLUT (PredSampleCombined), isto é, as amostras intra-preditas são remodeladas de forma inversa para estar no domínio original.
[0188]Considerações similares também são aplicáveis às modalidades de codificação correspondentes, uma vez que os codificadores (por exemplo, 200 E) incuem uma malha de decodificador que corresponde ao decodificador correspondente. Como discutido anteriormente, a equação (20) descreve uma modalidade em que a decisão de modo é realizada no domínio remodelado. Em outra modalidade, a decisão de modo pode ser realizada no domínio original, ou seja: distortion = dfunc (SreSample-InvLUT (RecSample)).
[0189]Para deslocamento QP de croma baseado em luma ou escalonamento de residuais de croma, o valor médio de luma CU (Ycy ) sempre pode ser calculado usando o valor predito (em vez do valor reconstruído) para latência mínima.
Derivações de QP Croma
[0190]Como na Ref. [6], pode-se aplicar o mesmo processo de derivação chromaDQP proposto para equilibrar a relação luma e croma causada pela curva de remodelagem. Em uma modalidade, pode-se derivar um valor chromaDQP em partes, com base na atribuição da palavra de código para cada compartimento. Por exemplo: for the k-th bin, scalex = (Mx/ Ma); (25) chromaDQP = 6 * log2 (escalex); end Otimização de Codificador
[0191]Conforme descrito na Ref. [6], recomenda-se o uso de distorção ponderada baseada em pixel quando o lumaDQP estiver ativado. Quando a remodelagem é usada, em um exemplo, o peso necessário é ajustado com base na função de remodelagem (f(x)). Por exemplo: Wrsp = FP)? (26) onde f'(x) denota a inclinação da função de remodelagem f(x).
[0192]Em outra modalidade, pode-se derivar pesos por partes diretamente com base na atribuição de palavras de código para cada compartimento. Por exemplo: para o k-ésimo compartimento, W5p(k)= (29. 27)
[0193]Para um componente croma, o peso pode ser definido como 1 ou algum fator de escalonamento sf. Para reduzir a distorção de croma, sf pode ser definido maior do que 1. Para aumentar a distorção de croma, sf pode ser maior do que 1. Em uma modalidade, sf pode ser usado para compensar a equação (25). Como chromaDQP pode ser definido apenas como inteiro, pode-se usar sf para acomodar a parte decimal de chromaDQP: assim, sf = 2 ((chromaDQP-INT (chromaDQP))/3))
[0194]EM outra modalidade, pode-se definir explicitamente o valor chromaQPOffset no conjunto de parâmetros de imagem (PPS) ou em um cabeçalho de fatia para controlar a distorção de croma.
[0195]A curva do remodelador ou a função de mapeamento não precisa ser corrigida para toda a sequência de vídeo. Por exemplo, ela pode ser adaptada com base no parâmetro de quantização (QP) ou na taxa de bits alvo. Em uma modalidade, pode-se usar uma curva de remodelador mais agressiva quando a taxa de bits é baixa e usar remodelagem menos agressiva quando a taxa de bits é relativamente alta. Por exemplo, dados 32 compartimentos em sequências de 10 bits, cada compartimento tem inicialmente 32 palavras de código. Quando a taxa de bits é relativamente baixa, pode-se usar palavras de código entre [28 40] para escolher palavras de código para cada compartimento. Quando a taxa de bits é alta, pode-se escolher palavras de código entre [31 33] para cada compartimento ou pode-se simplesmente usar uma curva de remodelagem de identidade.
[0196]Dada uma fatia (ou um recorte), a remodelagem no nível da fatia (recorte) pode ser executada de várias maneiras que podem compensar a eficiência da codificação de compensação com complexidade, incluindo: 1) desativar a remodelagem apenas nas fatias intra; 2) desativar a remodelagem em fatias inter específicas, tal como fatias inter em níveis de tempo específicos, ou em fatias inter que não são usadas para imagens de referência, ou em fatias inter consideradas como imagens de referência menos importantes. Essa adaptação de fatias também pode ser dependente de QP / taxa, de modo que diferentes regras de adaptação possam ser aplicadas a diferentes QPs ou taxas de bits.
[0197]Em um codificador, sob o algoritmo proposto, uma variância é calculada para cada compartimento (por exemplo, Bin Var(b) na equação (13)). Com base nessa informação, é possível alocar palavras de código com base em cada variância de compartimento. Em uma modalidade, BinVar(b) pode ser inversamente mapeado linearmente para o número de palavras de código em cada compartimento b. Em outra modalidade, mapeamentos não lineares tal como (BinVar(b))?, sqart (BinVar(b)) e similares, podem ser usados para mapear inversamente o número de palavras de código no compartimento b. Em essência, essa abordagem permite que um codificador aplique palavras de código arbitrárias a cada compartimento, além do mapeamento mais simples usado anteriormente, onde o codificador alocou palavras de código em cada compartimento usando os dois valores de faixa superior M: e Ma (por exemplo, ver a Figura 6C), ou os três valores de faixa superior, Mr, 32 ou Ma (por exemplo, ver a Figura 6D).
[0198]Como um exemplo, a Figura 6E representa dois esquemas de alocação de palavras de código com base nos valores de BinVar(b), o gráfico 610 representa a alocação de palavras de código usando dois limites, enquanto o gráfico 620 representa a alocação de palavras de código usando mapeamento linear inverso, onde a alocação de palavras de código para um compartimento é inversamente proporcional ao seu valor de BinVar(b). Por exemplo, em uma modalidade, o código a seguir pode ser aplicado para derivar o número de palavras de código (bin cw) em um compartimento específico: alpha = (minCW - maxCW) / (maxVar - minVar); beta = (maxCW * maxVar - minCW * minVar) / (maxVar - minVar); bin cw = round (alpha * bin var + beta) ;, onde min Var denota a variância mínima em todos os compartimentos, maxVar indica a variância máxima em todos os compartimentos, e minCW, maxCW denotam o número mínimo e máximo de palavras de código por compartimento, conforme determinado pelo modelo de remodelagem.
[0199]Refinamento de Deslocamento QP de Croma Baseado em Luma
[0200]Na Ref. [6], para compensar a interação entre luma e croma, foram definidos um deslocamento QP de croma adicional (denominado chromaDQP ou cQPO) e um escalonador residual de croma baseado em luma (cScale). Por exemplo: chromaQP = QP luma + chromaQPOffset + cQPO, (28)
onde chromaQPOffset denota um deslocamento QP de croma, e QP luma indica o QP de luma para a unidade de codificação. Conforme apresentado na Ref.
[6], em uma modalidade cQPO = —6 * log2(FwdLUT'[Yçy]) = — dQAP(Ycy), (29) onde FwdLUT'denota a inclinação (derivada de primeira ordem) de FwdLUT(). Para uma fatia inter, Ycy denota o valor médio predito de luma da CU. Para uma fatia intra, Ycy denota o valor remodelado inverso do valor médio predito de luma da CU. Quando a codificação de árvore dupla é usada para uma CU (ou seja, os componentes luma e croma têm duas árvores de codificação separadas e, portanto, a reconstrução de luma está disponível antes do início da codificação de croma), o valor médio de luma reconstruído da CU pode ser usado para derivar o valor cQPO. O fator de escala cScale foi definido como cScale = FwdLUT'[Ycy] = pow(2, -cQPO/6), (30) onde y = pow (2, x) denota a função y = 2%.
[0201]Dada a relação não linear entre os valores de QP derivados de luma (indicados como qPi) e os valores finais de QP de croma (indicados como QpC) (por exemplo, consultar a Tabela 8-10, “Specification of Qpc as a function of qPi for ChromaArrayType equal to 1” na Ref [4]), em uma modalidade, cQPO e cScale podem ser ainda ajustados da seguinte forma.
[0202]Denota-se como f QPi2QPc() um mapeamento entre os valores QP de luma e croma ajustados, por exemplo, como na Tabela 8-10 da Ref. [4], então chromaQP actual = f QPi2QPc [chromaQP] = =f QPi2QPc [QP luma + chromaQPOffset + cQPO]. (31)
[0203]Para escalonar o residual de croma, a escala precisa ser calculada com base na diferença real entre o QP de codificação de croma real, antes de aplicar cQPO e após aplicar cQPO: QPcBase = f QPi2QPc [QP luma + chromaQPOffset];
QPcFinal = f QPi2QPc [QP luma + chromaQPOffset + cQPOJ; (32) cQPO refine = QPcFinal - QpucBase; cScale = pow (2, - cCcQPO refine /6).
[0204]Em outra modalidade, também é possível absorver chromaQPOffset em cScale. Por exemplo, QPcBase = f QPi2QPc [QP luma]; QPcFinal = f QPi2QPc [QP luma + chromaQPOffset + cQPO]; (33) cTotalQPO refine = QPcFinal - QpcBase; cScale = pow (2, - cTotalQPO refine / 6).
[0205]Como um exemplo, conforme descrito na Ref. [6], em uma modalidade:
[0206]Faz-se CSCALE FP PREC = 16 denotar um parâmetro de precisão
[0207]e Escalonamento direto: depois que o residual de croma é gerado, antes da transformação e quantização: C Res=C orig-C pred C Res scaled = C Res * cScale + (1 << (CSCALE FP PREC - 1))) >>
CSCALE FP PREC
[0208]e Escalonamento inverso: após a quantização inversa e a transformação inversa de croma, mas antes da reconstrução: C Res inv=(C Res scaled << CSCALE FP PREC)/cScale C Reco=C Pred+C Res inv;
[0209]Em uma modalidade alternativa, as operações para remodelagem de croma em malha podem ser expressas como segue. No lado do codificador, para o residual (CxRes = CxOrg - CxPred) do componente croma Cx (por exemplo, Cb ou Cr) de cada CU ou TU, CxResScaled = CxRes * cScale[Ycy], (34) onde CxResScaled é o sinal residual de Cb ou Cr escalonado da CU a ser transformado e quantizado. No lado do decodificador, CxResScaled é o sinal residual de croma escalonado após a quantização inversa e a transformação, e CxRes = CxResScale / cScale[Yçy]. (35) A reconstrução final do componente croma é CxRec = CxPred + CxRes. (36)
[0210]Essa abordagem permite que o decodificador inicie operações de quantização inversa e de transformação para decodificação de croma imediatamente após a análise de sintaxe. O valor de cScale usado para uma CU pode ser compartilhado pelos componentes Cb e Cr e, a partir das equações (29) e (30), pode ser derivado como: cQPO[Yçy] = —6 * log2(FwdLUT'[Ycy]) (37) cScale[Yçy] = FwdLUT'[Ycy] = 2222 ÃO Onde Ycy é o valor médio predito de luma da CU atual em fatias inter (onde a codificação de árvore dupla não é usada e, portanto, o luma reconstruído não está disponível) e Yry é o valor médio de luma reconstruído da CU atual em fatias intra (onde a codificação em árvore dupla é usada). Em uma modalidade, as escalas são calculadas e armazenadas com números inteiros de ponto fixo de 16 bits e as operações de escalonamento no lado do codificador e do decodificador são implementadas com aritmética de número inteiro de ponto fixo. FwdLUT'[Ycy] denota a primeira derivada da função de remodelagem direta. Assumindo-se uma representação linear em partes da curva, então FwdLUT'(Y) = (CW [K] / 32) quando Y pertence ao k-ésimo compartimento. Para reduzir a latência de hardware, em outra modalidade (ver Figura 2E), Ycy pode usar o valor médio predito de luma da CU atual para os modos intra e inter, independentemente do tipo de fatia e se duas árvores são usadas ou não. Em outra modalidade, Yry pode ser derivado usando CUs reconstruídas (como aquelas na linha superior e / ou coluna esquerda da CU atual) para o modo intra e / ou inter. Em outra modalidade, uma média baseada em região, mediana e similares, valor luma ou valor cScale podem ser enviados no fluxo de bits explicitamente usando sintaxe de alto nível.
[0211]O uso de cScale não está limitado ao escalonamento de residuais de croma para remodelagem em malha. O mesmo método também pode ser aplicado à remodelagem fora de malha. Em uma remodelagem fora de malha, cScale pode ser usado para o escalonamento de amostras de croma. As operações são as mesmas da abordagem em malha.
[0212]No lado do codificador, quando computando o chroma RDOQ, o modificador lambda para ajuste de croma (quando usando o deslocamento QP ou quando usando o escalonamento de residuais de croma) também precisa ser calculado com base no deslocamento refinado: Modifier = pow(2, - cQPO refine/3); New lambda = Old lambda / Modifier. (38)
[0213]Conforme observado na equação (35), o uso de cScale pode exigir uma divisão no decodificador. Para simplificar a implementação do decodificador, pode-se decidir implementar a mesma funcionalidade usando uma divisão no codificador e aplicar uma multiplicação mais simples no decodificador. Por exemplo, faz-se cScalelnv = (1/cScale) então, como um exemplo, em um codificador cResScale = CxRes * cScale = CxRes / (1/cScale) = CxRes/cScalelnv, e no decodificador CxRes = cResScale/cScale = CxRes * (1/cScale) = CxRes * cScalelnv.
[0214]EM uma modalidade, cada fator de escalonamento de croma dependente de luma pode ser calculado para uma faixa de luma correspondente na representação linear em partes (PWL) em vez de para cada valor de palavra de código de luma. Assim, os fatores de escalonamento de croma podem ser armazenados em uma LUT menor (por exemplo, com 16 ou 32 entradas), por exemplo, cScalelnv [binldx], em vez da LUT de 1024 entradas (para palavras de código de luma de 10 bits) (por exemplo, cScale [Y]). As operações de escalonamento tanto no lado do codificador quanto no lado do decodificador podem ser implementadas com aritmética de número inteiro de ponto fixo, como a seguir: c'=sign(c) * ((abs(c) * s + 2ºSCALE FP PREC-1) >> CSCALE FP PREC), onde c é o residual de croma, s é o fator de escalonamento de residual de croma a partir de cScalelnv [binldx], binldx é decidido pelo valor médio de luma correspondente, e CSCALE FP PREC é um valor constante relacionado à precisão.
[0215]Em uma modalidade, enquanto a função de remodelagem direta pode ser representada usando N segmentos iguais (por exemplo, N = 8, 16, 32 e similares), a representação inversa compreenderá segmentos não lineares. A partir do ponto de vista da implementação, é desejável ter uma representação da função de remodelagem inversa usando também segmentos iguais; no entanto, forçar essa representação pode causar perda na eficiência da codificação. Como um compromisso, em uma modalidade, pode-se construir uma função de remodelagem inversa com uma representação de PWL “mista”, combinando segmentos iguais e desiguais. Por exemplo, quando usando 8 segmentos, é possível primeiro dividir a faixa total em dois segmentos iguais e depois subdividir cada um deles em 4 segmentos desiguais. Alternativamente, pode-se dividir a faixa total em 4 segmentos iguais e depois subdividir cada um em dois segmentos desiguais. Alternativamente, pode-se primeiro dividir ta faixa total em vários segmentos desiguais, depois subdividir cada segmento desigual em múltiplos segmentos iguais. Alternativamente, pode-se primeiro dividir a faixa total em dois segmentos iguais e depois subdividir cada segmento igual em sub-segmentos iguais, onde o comprimento do segmento em cada grupo de sub-segmentos não é o mesmo.
[0216]Por exemplo, sem limitação, com 1.024 palavras de código, pode-se ter: a) 4 segmentos com 150 palavras de código cada e dois segmentos com 212 palavras de código cada, ou b) 8 segmentos com 64 palavras de código cada e 4 segmentos com 128 palavras de código cada. O objetivo geral dessa combinação de segmentos é reduzir o número de comparações necessárias para identificar o índice em partes PWL dado um valor de código, simplificando assim as implementações de hardware e software.
[0217]EM uma modalidade, para uma implementação mais eficiente relacionada ao escalonamento de residual de croma, as seguintes variações podem ser ativadas: e Desativar o escalonamento de residual de croma quando forem usadas árvores luma / croma separadas + Desativar o escalonamento de residual de croma para croma 2x2; e e Usar o sinal de predição em vez do sinal de reconstrução para unidades intra-codificadas bem como para unidades inter-codificadas.
[0218]Como um exemplo, dado o decodificador representado na Figura 2E (200D D) para processar o componente luma, a Figura 2F representa uma arquitetura exemplificativa (200D DC) para processar as amostras de croma correspondentes.
[0219] Como representado na Figura 2F, em comparação com a Figura 2E, as seguintes alterações são feitas quando processando croma: + Os blocos de remodelagem direta e reversa (282 e 265-3) não são utilizados e Existe um novo bloco de escalonamento de residual de croma (288), substituindo efetivamente o bloco de remodelagem inversa para luma (265-3); e + O bloco de reconstrução (285-C) é modificado para manipular residuais de cor no domínio original, conforme descrito na equação (36): CxRec = CxPred + CxRes.
[0220]A partir da equação (34), no lado do decodificador, faz-se CxResScaled denotar o sinal residual de croma escalonado extraído após quantização inversa e transformação (antes do bloco 288), e faz-se CxRes = CxResScaled * Cscalteinv denotar o residual de croma re-escalonado gerado pelo bloco de escalonamento de residual de croma (288) a ser usado pela unidade de reconstrução (285-C) para computar CxRec = CxPred + CxRes, em que CxPred é gerado pelos blocos de predição Intra (284) ou Inter (280).
[0221]O valor Cscatenv usado para uma Unidade de transformação (TU) pode ser compartilhado pelos componentes Cb e Cr e pode ser computado da seguinte maneira: e Se estiver no modo intra, computar a média dos valores de luma intra- preditos; e se estiver no modo inter, computar a média dos valores de luma inter- preditos de remodelagem direta. Ou seja, o valor médio de luma avg Y'ru é computado no domínio remodelado; e e Se na mesclagem combinada e na predição intra, então computar a média dos valores de luma preditos combinados. Por exemplo, os valores combinados preditos de luma podem ser computados de acordo com o Apêndice 2, seção 8.4.6.6.
* Em uma modalidade, pode-se aplicar uma LUT para computar Cscateinvy COM base em avg Y ru. Alternativamente, dada uma representação linear em partes (PWL) da função de remodelagem, pode-se encontrar o índice idx onde o valor avgY'ru pertence à PWL de mapeamento inverso.
Então, Cscateinv = cScalelnv [idx]
[0222]Uma implementação exemplificativa, conforme aplicável ao codec de codificação de vídeo versátil (Ref. [8]), atualmente em desenvolvimento por ITU e ISO, pode ser encontrada no Apêndice 2 (por exemplo, ver a Seção 8.5.5.1.2).
[0223]Desativar o escalonamento de residual de croma baseado em luma para fatias intra com duas árvores pode causar alguma perda na eficiência de codificação. Para melhorar os efeitos da remodelagem de croma, os seguintes métodos podem ser usados:
[0224]1. O fator de escalonamento de croma pode ser mantido o mesmo para o quadro inteiro, dependendo da média ou mediana dos valores da amostra de luma. Isso removerá a dependência no nível de TU em luma para o escalonamento de residual de croma.
[0225]2. Os fatores de escalonamento de croma podem ser derivados usando valores de luma reconstruídos a partir das CTUs vizinhas.
[0226]3. Um codificador pode derivar o fator de escalonamento de croma com base nos pixels de luma de origem e enviá-lo no fluxo de bits no nível de CU / CTU (por exemplo, como um índice para a representação em partes da função de remodelagem). Em seguida, o decodificador pode extrair o fator de escalonamento de croma da função de remodelagem sem depender dos dados de luma.
[0227]e O fator de escalonamento para uma CTU pode ser derivado e enviado apenas para fatias Intra; mas também pode ser usado para fatias Inter. O custo adicional de sinalização ocorre apenas para fatias Intra, não afetando a eficiência de codificação no acesso aleatório.
[0228]4. O croma pode ser remodelado no nível de quadro como luma, com a curva de remodelagem de croma sendo derivada da curva de remodelagem de luma com base em uma análise de correlação entre luma e chroma. Isso elimina completamente o escalonamento de residual de croma.
Aplicação de delta qp
[0229]Em AVC e HEVC, o parâmetro delta qp pode modificar o valor de QP para um bloco de codificação. Em uma modalidade, pode-se usar a curva de luma no remodelador para derivar o valor delta qp. Pode-se derivar um valor lumaDQP em partes, com base na atribuição de palavra de código para cada compartimento. Por exemplo: para o k-ésimo compartimento, scalex = (Mx / Ma); (39) lumaDQP« = INT (6 * log2 (scalex)),
onde INT() pode ser CEIL(), ROUND() ou FLOOR(). O codificador pode usar uma função de luma, por exemplo, média (luma), min (luma), max (luma) e similares, para encontrar o valor de luma para esse bloco, em seguida, usar o valor lumaDQP correspondente para esse bloco. Para obter o benefício de taxa - distorção, a partir da equação (27), pode-se usar distorção ponderada na decisão de modo e definir.
Wrsp(k) = scale.
[0230] Remodelagem e Considerações Para o Número de Compartimentos
[0231]Na codificação típica de vídeo de 10 bits, é preferencial usar pelo menos 32 compartimentos para o mapeamento de remodelagem; no entanto, para simplificar a implementação de decodificador, em uma modalidade, pode-se usar menos compartimentos, ou seja, 16, ou mesmo 8 compartimentos. Dado que um codificador já pode estar usando 32 compartimentos para analisar a sequência e derivar a palavra de código de distribuição, pode-se reutilizar a distribuição original de palavras de código de 32 compartimentos e derivar as palavras de código de 16 compartimentos adicionando as duas palavras de código correspondentes de 16 compartimentos dentro de cada 32 compartimentos, ou seja, parai=0a15 CWIn16Bin [1] = CWIn32Bin [2i] + CWIn32Bin [2i + 1].
[0232]Para o fator de escalonamento de residual de croma, pode-se simplesmente dividir a palavra de código por 2, e apontar para chromaScalingFactorLUT de 32 compartimentos. Por exemplo, dado CWIn328in [32] = (0 0 33 38 38 38 38 38 38 38 38 38 38 38 38 38 38 33 33 33 33 33 33 33 33 33 33 33 33 33 0 O), a alocação CW correspondente de 16 compartimentos é CWIn16Bin [16] = (0 71 76 76 76 76 76 76 71 66 66 66 66 66 66 O).
[0233]Essa abordagem pode ser estendida para manipular menos compartimentos, ou seja, 8, então,
parai=0a7 CWIn8Bin [i ]| = CWIn16Bin [2i] + CWIn16Bin [2i + 1).
[0234] Quando usando uma faixa estreita de palavras de código válidas (por exemplo, [64, 940] para sinais de 10 bits e [64, 235] para sinais de 8 bits), deve-se tomar cuidado para que o primeiro e o último compartimento não considerem mapeamento para palavras de código reservadas. Por exemplo, para um sinal de 10 bits, com 8 compartimentos, cada compartimento terá 1024/8 = 128 palavras de código, e o primeiro compartimento será [0, 127]; no entanto, como a faixa padrão de palavras de código é [64, 940], o primeiro compartimento deve considerar apenas as palavras de código [64, 127] Um sinalizador especial (por exemplo, video full range flag = O) pode ser usado para notificar o decodificador de que o vídeo de entrada tem uma faixa mais estreita do que a faixa total [0, 2PitdePth - 1] e que cuidados especiais devem ser tomados para não gerar palavras de código ilegais quando processando o primeiro e o último compartimento. Isso é aplicável tanto à remodelagem de luma quanto de croma.
[0235]Como um exemplo, e sem limitação, o Apêndice 2 fornece uma estrutura de sintaxe exemplificativa e elementos de sintaxe associados para suportar a remodelagem no codec versátil de vídeo (VVC) ISO / ITU (Ref. [8]) de acordo com uma modalidade que usa as arquiteturas representadas na Figura 2C, Figura 2E e Figura 2F, em que a função de remodelagem direta compreende 16 segmentos.
Referências
[0236]Cada uma das referências listadas aqui é incorporada por referência em sua totalidade.
[1] “Exploratory Test Model for HDR extension of HEVC”, K. Minoo e outros, MPEG output document, JOTVC-WO0092 (m37732), 2016, San Diego, USA.
[2] Pedido PCT PCT/US2016/025082, In-Loop Block-Based Image Reshaping in High Dynamic Range Video Coding, depositado em 30 de março de 2016, também publicado como WO 2016/164235, por G-M. Su.
[3] Pedido de Patente U.S. 15/410,563, Content-Adaptive Reshaping for High Codeword representation Images, depositado em 19 de janeiro de 2017, por T. Lu e outros.
[4] ITU-T H.265, “High efficiency video coding,” ITU, dezembro de 2016.
[5] Pedido PCT PCT/US2016/042229, Signal Reshaping and Coding for HDR and Wide Color Gamut Signals, depositado em 14 de julho de 2016, também publicado como WO 2017/011636, por P. Yin e outros.
[6] Pedido de Patente PCT PCT/US2018/040287, Integrated Image Reshaping and Video Coding, depositado em 29 de junho de 2018, por T. Lu e outros.
[7] J. Froehlich e outros, “Content-Adaptive Perceptual Quantizer for High Dynamic Range Images, Publicação de Pedido de Patente U.S. No. 2018/0041759, 08 de fevereiro de 2018.
[8] B. Bross, J. Chen, e S. Liu, “Versatile Video Coding (Draft 3)" JVET output document, JVET-L1001, v9, atualizado, 8 de janeiro de 2019.
Implementação de Sistema de Computador Exemplificativa
[0237]As modalidades da presente invenção podem ser implementadas com um sistema de computador, sistemas configurados em conjuntos de circuitos eletrônicos e componentes, um dispositivo de circuito integrado (IC) tal como um microcontrolador, um arranjo de portas programáveis em campo (FPGA), ou outro dispositivo lógico configurável ou programável (PLD), um processador de sinal digital ou tempo discreto (DSP), um IC de aplicação específica (ASIC), e / ou aparelho que inclui um ou mais de tais sistemas, dispositivos ou componentes. O computador e / ou o IC podem executar, controlar ou executar instruções relacionadas à remodelagem de sinal e codificação de imagens, tal como as descritas aqui. O computador e / ou IC podem computar qualquer um de uma variedade de parâmetros ou valores que se referem aos processos de remodelagem e de codificação de sinal aqui descritos. As modalidades de imagem e vídeo podem ser implementadas em hardware, software, suporte lógico inalterável, e várias combinações dos mesmos.
[0238]Certas implementações da invenção compreendem processadores de computador que executam instruções de software que fazem com que os processadores executem um método da invenção. Por exemplo, um ou mais processadores em uma tela, um codificador, um decodificador, um transcodificador ou similares podem implementar métodos relacionados à remodelagem de sinal e codificação de imagens conforme descrito acima, executando instruções de software em uma memória de programa acessível aos processadores. A invenção também pode ser fornecida na forma de um produto de programa. O produto de programa pode compreender qualquer meio não transitório e tangível que carrega um conjunto de sinais legíveis por computador compreendendo instruções que, quando executadas por um processador de dados, fazem com que o processador de dados execute um método da invenção. Os produtos de programa de acordo com a invenção podem estar em qualquer uma de uma ampla variedade de formas não transitórias e tangíveis. O produto do programa pode compreender, por exemplo, meios físicos tal como meio de armazenamento magnético de dados, incluindo disquetes, unidades de disco rígido, meios de armazenamento ópticos de dados, incluindo CD-ROMs, DVDs, meios de armazenamento eletrônicos de dados, incluindo ROMs, RAM flash ou similares. Os sinais legíveis por computador no produto do programa podem opcionalmente ser compactados ou criptografados.
[0239] Quando um componente (por exemplo, um módulo de software, processador, conjunto, dispositivo, circuito, etc.) é mencionado acima, a menos que indicado de outra forma, a referência a esse componente (incluindo uma referência a um “meio”) deve ser interpretada como incluindo como equivalentes a esse componente qualquer componente que execute a função do componente descrito (por exemplo, que seja funcionalmente equivalente), incluindo componentes que não sejam estruturalmente equivalentes à estrutura descrita que executa a função nas modalidades exemplificativas ilustradas da invenção.
Equivalentes, Extensões, Alternativas e Miscelânea
[0240]As modalidades exemplificativas que se referem com a remodelagem eficiente do sinal e a codificação de imagens são assim descritas. Na especificação anterior, as modalidades da presente invenção foram descritas com referência a vários detalhes específicos que podem variar de implementação para implementação. Assim, o único e exclusivo indicador do que é a invenção, e pretende que os requerentes sejam a invenção, é o conjunto de reivindicações que são emitidas a partir deste pedido, na forma específica em que essas reivindicações são depositadas, incluindo qualquer correção subsequente. Quaisquer definições expressamente estabelecidas neste documento para os termos contidos em tais reivindicações deverão reger o significado de tais termos usados nas reivindicações. Portanto, nenhuma limitação, elemento, propriedade, característica, vantagem ou atributo que não seja expressamente citado em uma reivindicação deve limitar o escopo de tal reivindicação de qualquer forma. A especificação e os desenhos devem, portanto, ser considerados em um sentido ilustrativo e não restritivo.
Modalidades Exemplificativas Enumeradas
[0241]A invenção pode ser incorporada em qualquer uma das formas aqui descritas, incluindo, mas não limitadas às seguintes Modalidades Exemplificativas Enumeradas (EEEs), que descrevem a estrutura, características e funcionalidade de algumas partes da presente invenção.
[0242]EEE 1. Método para remodelagem adaptativa de uma sequência de vídeo com um processador, o método compreendendo: acessar com um processador uma imagem de entrada em uma primeira representação de palavra de código; e gerar uma função de remodelagem direta que mapeia pixels da imagem de entrada para uma segunda representação de palavra de código, em que a segunda representação de palavra de código permite uma compressão mais eficiente do que a primeira representação de palavra de código, em que a geração da função de remodelagem direta compreende: dividir a imagem de entrada em múltiplas regiões de pixel; atribuir cada uma das regiões de pixel a um dos múltiplos compartimentos de palavras de código de acordo com uma primeira característica de luminância de cada região de pixel; computar uma métrica de compartimento para cada um dos múltiplos compartimentos de palavras de código de acordo com uma segunda característica de luminância de cada uma das regiões de pixel atribuídas a cada compartimento de palavras de código; alocar um número de palavras de código na segunda representação de palavras de código para cada compartimento de palavras de código de acordo com a métrica do compartimento de cada compartimento de palavras de código e um critério de otimização de taxa - distorção; e gerar a função de remodelagem direta em resposta à alocação de palavras de código na segunda representação de palavras de código para cada um dos múltiplos compartimentos de palavras de código.
[0243]EEE 2. O método de EEE 1, em que a primeira característica de luminância de uma região de pixel compreende o valor médio de pixel de luminância na região de pixel.
[0244]EEE 3. O método de EEE 1, em que a segunda característica de luminância de uma região de pixel compreende a variância dos valores de pixel de luminância na região de pixel.
[0245]EEE 4. O método de EEE 3, em que computar uma métrica de compartimento para um compartimento de palavras de código compreende computar a média das variâncias dos valores de pixel de luminância para todas as regiões de pixels atribuídas ao compartimento de palavras de código.
[0246]EEE 5. O método de EEE 1, em que alocar um número de palavras de código na segunda representação de palavra de código a um compartimento de palavras de código de acordo com sua métrica de compartimento compreende: não atribuir palavras de código ao compartimento de palavras de código, se nenhuma região de pixel estiver atribuída ao compartimento de palavras de código; atribuir um primeiro número de palavras de código se a métrica do compartimento de palavras de código for menor do que um valor limite superior; e caso contrário, atribuir um segundo número de palavras de código ao compartimento de palavras de código.
[0247]EEE 6. O método de EEE 5, em que para uma primeira representação de palavra de código com profundidade de B bits e uma segunda representação de palavra de código com profundidade de Bo bits e N compartimentos de palavras de código, o primeiro número de palavras de código compreende Mr= CEIL ((28º / (CW2- CW1)) * Ma) e o segundo número de palavras de código compreende Ma = 2º / N, onde CW1 < CW2 denota duas palavras de código em [0 2º-1].
[0248]EEE 7. O método de EEE 6, em que CW1 = 16 * 26-89) e CW2 = 235 * 2(8-8)
[0249]EEE 8. O método de EEE 5, em que a determinação do limite superior compreende: definir um conjunto de potenciais valores limite; para cada limite no conjunto de valores limite: gerar uma função de remodelagem direta com base no limite; codificar e decodificar um conjunto de quadros de teste de entrada de acordo com a função de remodelagem e uma taxa de bits R para gerar um conjunto de saída de quadros de teste decodificados; e computar uma métrica geral de otimização de taxa - distorção (RDO) com base nos quadros de teste de entrada e nos quadros de teste decodificados; e selecionar como o limite superior o valor limite no conjunto de potenciais valores limites para os quais a métrica RDO é mínima.
[0250]EEE 9. O método de EEE 8, em que computar a métrica RDO compreende computar
[0251]] = D + AR, onde D denota uma medida de distorção entre os valores de pixel dos quadros de teste de entrada e os valores de pixel correspondentes nos quadros de teste decodificados, e À indica um multiplicador Lagrangiano.
[0252]EEE 10. O método de EEE 9, em que D é uma medida da soma das diferenças quadráticas entre os valores de pixel correspondentes dos quadros de teste de entrada e dos quadros de teste decodificados.
[0253]EEE 11. O método de EEE 1, em que alocar um número de palavras de código na segunda representação de palavra de código para um compartimento de palavras de código de acordo com sua métrica de compartimento é baseado em uma tabela de consulta de alocação de palavras de código, em que a tabela de consulta de alocação de palavras de código define dois ou mais limites, dividindo uma faixa de valores de métrica de compartimento em segmentos e fornece o número de palavras de código a serem alocadas para um compartimento com uma métrica de compartimento dentro de cada segmento.
[0254]EEE 12. O método de EEE 11, em que, dada uma alocação de palavras de código padrão para um compartimento, os compartimentos com grandes métricas de compartimento recebem menos palavras de código do que a alocação de palavras de código padrão e os compartimentos com pequenas métricas de compartimento recebem mais palavras de código do que a alocação de palavras de código padrão.
[0255]JEEE 13. O método de EEE 12, em que para uma primeira representação de palavra de código com B bits e N compartimentos, a alocação de palavras de código padrão por compartimento é dada por Ma = 2º / N.
[0256]EEE 14. O método de EEE 1, compreendendo adicionalmente gerar informação de remodelagem em resposta à função de remodelagem direta, em que a informação de remodelagem compreende um ou mais de: um sinalizador indicando um valor mínimo de índice de compartimento de palavras de código a ser usado em um processo de reconstrução de remodelagem, um sinalizador indicando um valor máximo de índice de compartimento de palavras de código a ser usado no processo de construção de remodelagem, um sinalizador indicando um tipo de perfil de modelo de remodelagem, em que cada tipo de perfil de modelo está associado a parâmetros relacionados ao compartimento padrão, ou um ou mais valores delta a serem usados para ajustar os parâmetros relacionados ao compartimento padrão.
[0257]EEE 15. O método de EEE 5, compreendendo adicionalmente atribuir a cada compartimento de palavras de código um valor de importância do compartimento, em que o valor da importância do compartimento é: O, se nenhuma palavra de código é atribuída ao compartimento de palavras de código; 2, se o primeiro valor de palavras de código é atribuído ao compartimento de palavras de código; e 1, caso contrário.
[0258]EEE 16. O método de EEE 5, em que determinar o limite superior compreende: dividir a faixa de luminância dos valores de pixel na imagem de entrada em compartimentos;
para cada compartimento, determinar um valor de histograma de compartimento e um valor médio de variância de compartimento, em que, para um compartimento, o valor de histograma de compartimento compreende o número de pixels no compartimento sobre o número total de pixels na imagem e o valor de variância de compartimento médio fornece uma métrica da variância média de pixels dos pixels no compartimento; classificar os valores médios de variância do compartimento para gerar uma lista classificada dos valores médios de variância do compartimento e uma lista classificada dos índices médios do valor de variância do compartimento; computar uma função de densidade cumulativa como uma função dos valores médios de variância de compartimento com base nos valores do histograma de compartimento e na lista classificada de índices médios de valor de variância de compartimento; e determinar o limite superior com base em um critério satisfeito por valores da função de densidade cumulativa.
[0259]EEE 17. O método de EEE 16, em que computar a função de densidade cumulativa compreende computar: BinVarSortDsdCDF[0] = BinHist[BinldxSortDsd[0]]; for (int b = 1; b < PIC ANALYZE CW BINS; b++) ( BinVarSortDsdCDF|[b] = BinVarSortDsdCDF|b - 1) + BinHist[BinldxSortDsd]|[b]]; kb onde b indica um número de compartimento, PIC ANALYZE CW BINS denota o número total de compartimentos, BinVarSortDsdCDF [b] denota a saída da função CDF para o compartimento b, BinHist [ i ] denota o valor do histograma de compartimento para o compartimento i, e BinldxSortDsd[] denota a lista classificada dos índices médios de valor de variância de compartimento.
[0260]EEE 18. O método de EEE 16, em que, sob um critério de que para k % dos pixels na imagem de entrada a variância média do compartimento é maior ou igual ao limite superior, o limite superior é determinado como o valor médio da variância do compartimento para o qual a saída de CDF é k%.
[0261]EEE 19. O método de EEE 18, em que k = 50.
[0262]EEE 20. Em um decodificador, um método para reconstruir uma função de remodelagem, compreendendo: receber em um fluxo de bits codificado, elementos de sintaxe caracterizando um modelo de remodelagem, em que os elementos de sintaxe incluem um ou mais de um sinalizador indicando um valor mínimo de índice de compartimento de palavras de código a ser usado em um processo de construção de remodelagem, um sinalizador indicando um valor máximo de índice de compartimento de palavras de código a ser usado em um processo de construção de remodelagem, um sinalizador indicando um tipo de perfil de modelo de remodelagem, em que o tipo de perfil de modelo está associado aos parâmetros relacionados ao compartimento padrão, incluindo valores de importância de compartimento, ou um sinalizador indicando um ou mais valores de importância de compartimento delta a serem usados para ajustar os valores de importância de compartimento padrão definidos no perfil de modelo de remodelagem; determinar com base no perfil de modelo de remodelagem os valores de importância de compartimento padrão para cada compartimento e uma lista de alocação de um número padrão de palavras de código a serem alocadas para cada compartimento de acordo com o valor de importância do compartimento; para cada compartimento de palavras de código: determinar seu valor de importância do compartimento adicionando seu valor de importância do compartimento padrão ao valor de importância do compartimento delta; determinar o número de palavras de código a serem alocadas para o compartimento de palavras de código com base no valor de importância do compartimento e na lista de alocação; e gerar uma função de remodelagem direta com base no número de palavras de código alocadas para cada compartimento de palavras de código.
[0263]EEE 21. O método de EEE 20, em que determinar Mx, o número de palavras de código alocadas para o k-ésimo compartimento de palavras de código, usando a lista de alocação, compreende adicionalmente: para o k-ésimo compartimento: if bin importance [k] == O then M«x= O; else, if bin importance [k] == 2 then M« = Mr; else Mx = Ma, onde Ma e Mr: são elementos da lista de alocação e bin importance [k] denota o valor de importância do k-ésimo compartimento.
[0264]EEE 22. Em um decodificador compreendendo um ou mais processadores, um método para reconstruir dados codificados, compreende: receber um fluxo de bits codificado (122) compreendendo uma ou mais imagens remodeladas codificadas em uma primeira representação de palavra de código e metadados (207) relacionados à informação de remodelagem para as imagens remodeladas codificadas; gerar (250) uma função de remodelagem inversa com base nos metadados relacionados à informação de remodelagem, em que a função de remodelagem inversa mapeia os pixels da imagem remodelada da primeira representação de palavra de código para uma segunda representação de palavra de código;
gerar (250) uma função de remodelagem direta com base nos metadados relacionados à informação de remodelagem, em que a função de remodelagem direta mapeia os pixels de uma imagem da segunda representação de palavra de código para a primeira representação de palavra de código;
extrair do fluxo de bits codificado uma imagem remodelada codificada compreendendo uma ou mais unidades codificadas, em que para uma ou mais unidades codificadas na imagem remodelada codificada:
para uma unidade de codificação intra-codificada (CU) na imagem remodelada codificada:
gerar primeiras amostras reconstruídas remodeladas da CU (227) com base em residuais remodelados na CU e nas primeiras amostras de predição remodeladas;
gerar (270) uma saída de filtro de malha remodelada com base nas primeiras amostras reconstruídas remodeladas e nos parâmetros de filtro de malha;
aplicar (265) a função de remodelagem inversa à saída do filtro de malha remodelada para gerar amostras decodificadas da unidade de codificação na segunda representação de palavra de código; e armazenar as amostras decodificadas da unidade de codificação na segunda representação de palavra de código em um armazenador de referência;
para uma unidade de codificação inter-codificada na imagem remodelada codificada:
aplicar a função de remodelagem direta a amostras de predição armazenadas no armazenador de referência na segunda representação de palavra de código para gerar segundas amostras de predição remodeladas;
gerar segundas amostras reconstruídas remodeladas da unidade de codificação com base em residuais remodelados na CU codificada e nas segundas amostras de predição remodeladas;
gerar uma saída de filtro de malha remodelada com base nas segundas amostras reconstruídas remodeladas e nos parâmetros de filtro de malha; aplicar a função de remodelagem inversa à saída do filto de malha remodelada para gerar amostras da unidade de codificação na segunda representação de palavra de código; e armazenar as amostras da unidade de codificação na segunda representação de palavra de código em um armazenador de referência; e gerar uma imagem decodificada com base nas amostras armazenadas no armazenador de referência.
[0265]EEE 23. Um aparelho compreendendo um processador e configurado para executar um método conforme citado em qualquer um de EEEs 1 a 22.
[0266]EEE 24. Um meio de armazenamento legível por computador não transitório, que armazena instruções executáveis por computador para executar um método com um ou mais processadores, de acordo com qualquer um de EEEs 1 a 22. Apêndice 1 Implementação exemplificativa de classificação de bolha. void bubbleSortDsd(double* array, int * idx, int n) ( int, j; bool swapped; for(i=z O0;i<n-1; i++) t swapped = false; for (j=0;j<n-i-1;j++) ( if (array[ j ] < array[j + 11)
( swap(&array[ j ], &array[] + 11); swap(&idx[j], &idx[j + 1]); swapped = true; + + if (swapped == false) break; ) ) Apêndice 2
[0267] Como um exemplo, este Apêndice fornece uma estrutura de sintaxe exemplificativa e elementos de sintaxe associados de acordo com uma modalidade para suportar a remodelagem no Codec de Vídeo Versátil (VVC) (Ref. [8]), atualmente em desenvolvimento conjunto por ISO e ITU. Novos elementos de sintaxe na versão de rascunho existente são destacados ou explicitamente notados. Números de equação como (8-xxx) denotam espaços reservados para serem atualizados, conforme necessário, na especificação final. 0268]Em 7.3.2.1, sintaxe de Sequence parameter set RBSP seq parameter set rbsp( ) ( sps seq parameter set id | intra only constraint flag | u(1) max bitdepth constraint ide max chroma format constraint ide frame only constraint flag u(1) no qtbtt dual tree intra constraint flag no sao constraint flag no alf constraint flag | no pcm constraint flag | u(1) no temporal mvp constraint flag no sbtmvp constraint flag no amvr constraint flag u(1) no cclm constraint flag no dep quant constraint flag u(1) no sign. data hiding constraint flag u(1) [o etromafomatide == 3) ==> | | separate colour plane flag u(1) bit depth chroma minus8 ue(v) log2 ctu size minus2 ue(v) | if( sos max mtt hierarchy depth intra tile groups luma != 0)( | ) race RE FI ) o IEIALREITETEIDO = sps max mtt hierarchy depth intra tile groups chroma ue(v) if (sps max mtt hierarchy depth intra tile groups chroma != 0 )( sps log2 diff max tt min qt intra tile group chroma ue(v)
RM
RM | sps alf enabled flag | u(1) [o pemenabiedfag)( =| | pcm sample bit depth chroma minus1 u(4)
Lo | if( sps ref wraparound enabled flag ) | if( sps temporal mvp enabled flag ) sps cclm enabled flag u(1) sps. affine enabled flag u(1) [E psafina enabiedfa [o sps cpr enabled flag u(1) | sps ladf enabled flag | u(1) [O isestadtenabiea fe DT | sps ladf lowest interval qp offset se(v) [ iso: <sps num led imenels minusas ERIC | | ) | Lo rbsp trailing bits( )
RM 0269]Em 7.3.3.1, sintaxe geral de tile group header [o tegroupheader( = | |pescritor| tile group pic parameter set id ue(v) Lo a NumtesinPic > E | ) | | iMparttion constraints overide enabled flag) | | | Ttfparttonconstrains overide flag) = | | if(tile group max mtt hierarchy depth luma!=0) tile group log2 diff max bt min qt luma Lo [Ge gn penrl E dpidualee latas = [Tie group. max mit hierareny depheirama 0) tile group log2 diff max bt min qt chroma Lo ) | Lo Lo Lo meg he FDC [| | | Ysps temporal mvp enabled flag) | | [O WtegonhhetrrB) | mvd 1 zero flag [egos temporitmwp enaBledfanD 1 [O WtegonhetrB) collocated from 10 flag Lo Lo ses afíne enable fag) [| | | five minus max num subblock merge cand Lo if( pps tile group chroma qp offsets present flag )( [o tile group cb qp offset se(v) ) if( sps sao enabled flag )( [o Lo femomaamaytype 120) | tile group sao chroma flag Lo Lo fsesatenaed fia E if( tile group alf enabled flag) Fo ABRO O Áj|
LO
[ego PIT EE EI [| if( tile group type == B) num ref idx 11 active minus1 Lo if !dep quant enabled flag ) Lo [E raeblockng fiterovemide enabled fla) 1 if( deblocking filter override flag ) ( [o [e group deblockng fter disabled flag To tile group beta offset div2 Lo Lo rm RemeSDOt o for(i=0;i<num tiles in tile group minus1; i++ ) entry point offset minus1[i] Lo | Tlspsreshaper enabled flag) | tile group reshaper model present flag | Tº(tle group reshaper model present flag) | fMegroup reshapermedel (| | if (tile group reshaper enable flag && (!( qtbtt dual tree intra flag && DA tile group type==1)))
LD byte alignment( ) [o RO Mr 0270]Adicionar um nova tabela de sintaxe tile group reshaper model: [ Megrouoreshapermodel OC | Descritor | | for (1 = reshaper model min bin jdx; i <= reshaper model max binidçit+)(| ===> | r(reshaper model bin delta abs CWIKI>0) | RO a Lo
[0271]Na semântica geral de sequence parameter set RBSP, adicionar a seguinte semântica:
[0272]sps reshaper enabled flag igual a 1 específica que o remodelador é usado na sequência de vídeo codificada (CVS). sps reshaper enabled flag igual a O especifica que o remodelador não é usado em CVS.
[0273]Na sintaxe de tile group header, adicionar a seguinte semântica:
[0274]tile group reshaper model present flag igual a 1 especifica que tile group reshaper model() está presente — em tile — group header. tile group reshaper model present flag igual a o especifica que tile group reshaper model () não está presente no tile group header. Quando tile group reshaper model present flag não está presente, infere-se que ele seja igual a O.
[0275]tile group reshaper enabled flag igual a 1 específica que o remodelador está ativado para o grupo de blocos atual. tile group reshaper enabled flag igual a O especifica que o remodelador não está ativado para o grupo de blocos atual. Quando tile group reshaper enable flag não está presente, infere-se que ele seja igual a O.
[0276]tile group reshaper chroma residual scale flag igual a 1 especifica que o escalonamento de residual de croma é ativado para o grupo de blocos atual. tile group reshaper chroma residual scale flag igual a O específica que o escalonamento de residual de croma não está ativado para o grupo de blocos atual. Quando tile group reshaper chroma residual scale flag não está presente, infere- se que ele seja igual a O.
[0277]Adicionar sintaxe tile group reshaper model ()
[0278]reshaper model min bin idx específica o índice mínimo de compartimento (ou parte) a ser usado no processo de construção de remodelador. O valor de reshaper model min bin idx deve estar na faixa de O a MaxBinldx, inclusive.
O valor de MaxBinldx deve ser igual a 15.
[0279]reshaper model delta max bin idx especifica o índice máximo permitido de compartimento (ou parte) MaxBinldx menos o índice máximo de compartimento a ser usado no processo de construção de remodelador. O valor de reshaper model max bin idx é definido igual a MaxBinldx - reshaper model delta max bin idx.
[0280]reshaper model bin delta abs cw prec minus1 mais 1 especifica o número de bits usados para a representação da sintaxe reshaper model bin delta abs CW |[i].
[0281]reshaper model bin delta abs CW [1] especifica o valor absoluto da palavra de código delta para o i-ésimo compartimento.
[0282]reshaper model bin delta sign CW flag [ i | especifica o sinal de reshaper model bin delta abs CW [i] da seguinte maneira:
[0283]- Se reshaper model bin delta sign CW flag [i ]J é igual a 0, a variável correspondente RspDeltaCW [ i ] é um valor positivo.
[0284] Caso contrário (reshaper model bin delta sign CW flag [i] não é igual a O), a variável correspondente RespDeltaCW [i ] é um valor negativo.
[0285] Quando reshaper model bin delta sign CW flag [ i ] não está presente, ele é inferido como sendo igual a O.
[0286]A variável RspDeltaCW [ i ] = (1 - 2 * reshaper model bin delta sign CW [i])* reshaper model bin delta abs CW|[i];
[0287]A variável RepCW [ i ] é derivada da seguinte maneira:
[0288]A variável OrgCcW é definida como sendo igual a (1 << BitDepthy) / (MaxBinldx + 1).
[0289] Se reshaper model min bin idx <= i <= reshaper model max bin idx
[0290]RspCW [i] = OrgCW + RspDeltaCW [i].
[0291]- Caso contrário, RspCW [i]=O0.
[0292]O valor de RspCW [i ] deve estar na faixa de 32 a 2* OrgCW - 1seo valor de BitDepthy é igual a 10.
[0293]As variáveis InputPivot [i] com i na faixa de O a MaxBinldx + 1, inclusive, são derivadas da seguinte maneira
[0294]InputPivot [i ] = | * OrgCW
[0295]A variável ReshapePivot [ i ] com i na faixa de O a MaxBinldx + 1, inclusive, a variável ScaleCoef [i] e InvScaleCoeff [i] com i na faixa de O a MaxBinldx, inclusive, são derivadas da seguinte maneira: ShiftY = 14 ReshapePivot [0] = O; for (i = 0; i <= MaxBinldx; i ++) ( ReshapePivot [i + 1] = ReshapePivot [i] + RsepCW [i] ScaleCoef [i ]| = (RspCW [1] * (1 << shiftY) + (1 << (Log2 (OrgCW) 1))) >> (Log2 (OrgCW)) If (RSspoW [i]==0) InvScaleCoeff [i]= O else InvScaleCoeff [i ]| = OrgCW * (1 << shiftY) / RspCW [i] +
[0296]A variável ChromaScaleCoef [ i ] com i na faixa de O a MaxBinldx, inclusive, é derivada da seguinte maneira:
[0297] ChromaResidualScaleLut [64] = (16384, 16384, 16384, 16384, 16384, 16384, 16384, 8192, 8192, 8192, 8192, 5461, 5461, 5461, 5461, 4096, 4096, 4096, 4096, 3277, 3277,3277,3277,2731,2731,2731,2731,2341,2341,2341,2048, 2048, 2048, 1820, 1820, 1820, 1638, 1638, 1638, 1638, 1489, 1489, 1489, 1489, 1365, 1365, 1365, 1365, 1260, 1260, 1260, 1260, 1170, 1170, 1170, 1170, 1092, 1092, 1092, 1092,
1024, 1024, 1024, 1024); Shifte = 11 - If (RSspCW [i]==0) ChromaScaleCoef [i ] = (1 << shiftC) - Otherwise (RspCW [i]!=O0), ChromaScaleCoef [i ]| = ChromaResidualScaleLut [Clip3 (1, 64, RspCW [i 1>>1)-1]
[0298]Notaa Em uma implementação alternativa, pode-se unificar o escalonamento para luma e croma, eliminando assim a necessidade de ChromaResidualScaleLut []. Em seguida, o escalonamento de croma pode ser implementado como: Shiftc = 11 —if(RspoW[i]==0) ChromaScaleCoef [i] = (1 << shiftC) — Otherwise (RspCW [1]! = 0), o seguinte se aplica: BinCW = BitDepthY> 10 ? (RspCW [i ] >> (BitDepthY - 10)): BitDepthY <10 ? (RspCW [i] << (10 = BitDepthY)): RspCW [i]; ChromaScaleCoef [i ] = OrgCW * (1 << shiftC) / BInCW [1].
[0299]Adicionar o seguinte no processo de predição de amostra ponderada para mesclagem combinada e predição intra. A adição está destacada.
[0300]8.4.6.6 Processo de predição de amostra ponderada para mesclagem combinada e predição intra
[0301]As entradas para esse processo são: — a largura do bloco de codificação atual cbWidth, — a altura do bloco de codificação atual coHeight, — dois (cbWidth) x (cbHeight) arranjos predSampleslnter e predSampleslntra, — o modo de predição intra predModelntra,
— uma variável cldx especificando o índice do componente de cor.
[0302]A saída desse processo é o arranjo (cbWidth) x (cbHeight) predSamplesComb dos valores de amostra de predição.
[0303]A variável bitDepth é derivada da seguinte maneira: — Se cldx é igual a O, bitDepth é definido como BitDepthv. — Caso contrário, bitDepth é definido como BitDepthc.
[0304]As amostras de predição predSamplesComb [ x ] [ y] com x = O..cbWidth - 1 e y = 0..cbHeight - 1 são derivadas da seguinte maneira: — O peso w é calculado da seguinte forma: — Se predModelntra é INTRA ANGULARSB50, w é especificado na Tabela 8-10 com nPos igual a y e nSize igual a coHeight. — Caso contrário, se predModelntra é INTRA ANGULAR18, w é especificado na Tabela 8-10 com nPos igual a x e nSize igual a cbWidth. — Caso contrário, w é definido como 4. — Se cldx é igual a 0, predSampleslnter é derivado da seguinte maneira: — Se tile group reshaper enabled flag é igual a 1, ShiftY = 14 idxY = predSamplesinter [x] [y] >> Log2 (OrgCW) predSamplesinter [x] [y] = Clip1Y (ReshapePivot [idxY] + (ScaleCoeff [idxY] * (predSampleslnter [x] [y] InputPivot [idxY]) + (1 << (shiftY - 1))) >> shiftY) (8 xx) — Caso contrário (tile group reshaper enabled flag é igual a O) predSampleslnter [ x ] [ y ] = predSamplesInter [x] [y] — As amostras de predição predSamplesComb [ x ] [ y ] são derivadas da seguinte maneira: predSamplesComb [x] [y] = (w * predSampleslntra [x] [y] + (8-740)
(8 - w) * predSampleslnter [x] [y]) >> 3)
[0305] Tabela 8 10 - Especificação de w como uma função da posição nP e do tamanho nS
[0306]Adicionar o seguinte no processo de reconstrução de imagem
[0307]8.5.5 Processo de reconstrução de imagem
[0308]As entradas para esse processo são: — uma localização (xCurr, yCurr) especificando a amostra superior esquerda do bloco atual em relação à amostra superior esquerda do componente de imagem atual, — as variáveis nCurrSw e nCurrSh que especificam a largura e a altura, respectivamente, do bloco atual, — uma variável cldx especificando o componente de cor do bloco atual, — um arranjo (nCurrSw) x (nCurrSh) predSamples especificando as amostras preditas do bloco atual, — um arranjo (nCurrSw) x (nCurrSh) resSamples especificando as amostras residuais do bloco atual.
[0309]Dependendo do valor do componente de cor cldx, são feitas as seguintes atribuições: — Se cldx é igual a O, recSamples corresponde ao arranjo de amostras de imagem reconstruídas S. e a função clipCidx1 corresponde a Clip1v.
— Caso contrário, se cldx é igual a 1, receSamples corresponde ao arranjo de amostras de croma reconstruídas SCb e a função clipCidx1 corresponde a Clipic.
— Caso contrário (cldx é igual a 2), recSamples corresponde ao arranjo de amostras de croma reconstruídas SCr e a função clipCidx1 corresponde a Cliptc.
[0310] Quando o valor de tile group reshaper enabled flag é igual a 1, o bloco (nCurrSw) x (nCurrSh) do arranjo de amostras reconstruídas recSamples na localização (xCurr, yCurr) é derivado como o processo de mapeamento especificado na cláusula 8.5.5.1. Caso contrário, o bloco (nCurrSw) x (nCurrSh) do arranjo de amostras reconstruídas recSamples na localização (xCurr, yCurr) é derivado da seguinte maneira: recSamples [xCurr + i] [yCurr + j] = clipCidx1 (predSamples [ i ] []j ] + resSamples [i] [j]) (8-x0x) com | = 0..nCurrSw - 1, j = O..nCurrSh - 1
[0311]8.5.5.1 Reconstrução de imagem com processo de mapeamento
[0312]Esta cláusula especifica a reconstrução da imagem com o processo de mapeamento. A reconstrução de imagem com processo de mapeamento para o valor da amostra de luma é especificada em 8.5.5.1.1. A reconstrução de imagem com processo de mapeamento para o valor da amostra de croma é especificada em
8.5.5.1.2.
[0313]8.5.5.1.1 Reconstrução de imagem com processo de mapeamento para o valor da amostra de luma
[0314]As entradas para esse processo são: — um arranjo (nCurrSw) x (nCurrSh) predSamples especificando as amostras preditas de luma do bloco atual, — um arranjo (nCurrSw) x (nCurrSh) resSamples especificando as amostras residuais de luma do bloco atual.
[0315]Os resultados deste processo são: —- um arranjo de amostras de predição de luma mapeado (nCurrSw) x (nCurrSh) predMapSamples, —- um arranjo (nCurrSw) x (nCurrSh) de amostras de luma reconstruídas recSamples.
[0316]O predMapSamples é derivado da seguinte maneira: — If (CuPredMode [xCurr] [yCurr] = = MODE INTRA) || (CuPredMode [xCurr] [yCurr] = = MODE INTER && mh intra flag [xCurr] [yCurr])
predMapSamples [xCurr + i] [yYCurr + j]] = predSamples [i ] [j] (8-x0Xx) with i = O..nCurrSw - 1, j = O..nCurrSh - 1 — Otherwise ((CuPredMode [xCurr] [yCurr] = = MODE INTER && !mh intra flag [xCurr] [yCurr])), o seguinte se aplica: shiftY = 14 idxY = predSamples [1 ] []] >> Log2 (OrgCW) predMapSamples [xCurr + i] [yCurr + j] = ReshapePivot [idxY] + (ScaleCoeff [idxY] * (predSamples [ i ] [] ] InputPivot [idxY]) + (1 << (shiftY - 1))) >> shiftY (8-xxx) with i = O0..nCurrSw - 1, j = O..nCurrSh - 1
[0317]O recSamples é derivado da seguinte maneira: recSamples [xCurr + i] [yCurr + j]] = Clip1y (predMapSamples [xCurr + i] [yCurr + j]] + resSamples [1] [j]]) (8-xXxXx) with i = O..nCurrSw - 1, j = O..nCurrSh - 1
[0318]8.5.5.1.2 Reconstrução de imagem com processo de mapeamento para o valor da amostra de croma
[0319]As entradas para esse processo são: - um arranjo (nNCurrSwx2) x (nCurrShx2) mapeado predMapSamples especificando as amostras preditas de luma mapeadas do bloco atual, — um arranjo (nCurrSw) x (nCurrSh) predSamples especificando as amostras preditas de croma do bloco atual, — um arranjo (nCurrSw) x (nCurrSh) resSamples especificando as amostras residuais de croma do bloco atual.
[0320]A saída para esse processo é o arranjo de amostras de croma reconstruídas recSamples.
[0321]O recSamples é derivado da seguinte maneira: - If (ltile group reshaper chroma residual scale flag || ((nCurrSw) x
(nCurrSh) <= 4)) recSamples [xCurr + i] [yCurr + j] = Clip1C (pré-amostras [1] []] + resSamples [i] [j]) (8x0) with i = O..nCurrSw - 1, j = O..nCurrSh - 1 - Otherwise (tile group reshaper chroma residual scale flag && ((nCurrSw) x (nCurrSh)> 4)), o seguinte se aplica:
[0322]A variável varScale é derivada da seguinte maneira:
1. invAvgLuma = Clip1v( (ZiZ; predMapSamples[ (xCurr << 1 ) + i ]|[ (yCurr << 1) +j ] + nCurrSw * nCurrSh *2) / ( nCurrSw * nCurrSh *4 ) )
2. A variável idxYInv é derivada involuindo a identificação do índice de função por partes, conforme especificado na cláusula 8.5.6.2, com a entrada do valor de amostra invAvgLuma.
3. varScale = ChromaScaleCoef [ idxYInv ] O recSamples é derivado da seguinte maneira: —Iftu cbf cldx [xCurr] [yCurr] é igual a 1, o seguinte se aplica: Shiftc = 11 recSamples [xCurr + i] [yCurr + j] = ClipCidx1 (predSamples [ i ] [] ] + Sign (resSamples [1] [j]) * ((Abs (resSamples [1 ] [] ]) * varScale + (1 << (shiftC - 1))) >> shiftC)) (8-x00) with i = O..nCurrSw - 1, j = O..nCurrSh - 1 — Otherwise (tu cbf cldx [xCurr] [yCurr] equal to 0) recSamples [xCurr + i] [yCurr + j]] = ClipCidx1 (predSamples [i ] [] 1) (800) with i = 0..nCurrSw - 1, j = O..nCurrSh - 1
[0323]8.5.6 Processo de mapeamento inverso de imagem
[0324]Esta cláusula é chamada quando o valor de tile group reshaper enabled flag é igual a 1. A entrada é o arranjo de amostras de luma reconstruídas S1 e a saída é o arranjo de amostras de imagem de luma reconstruídas S'. após o processo de mapeamento inverso.
[0325]O processo de mapeamento inverso para o valor da amostra de luma é especificado em 8.4.6.1.
[0326]8.5.6.1 Processo de mapeamento inverso de imagem dos valores de amostra de luma
[0327]A entrada para esse processo é uma localização de luma (xP, yP), especificando a localização da amostra de luma em relação à amostra de luma superior esquerda da imagem atual.
[0328]A saída desse processo é um valor de amostra de luma mapeado inverso invLumaSample.
[0329]O valor de invLumaSample é derivado aplicando as seguintes etapas ordenadas:
1. A variáveç idxY Inv é derivada invocando a identificação do índice de função por partes, conforme especificado na cláusula 8.5.6.2, com a entrada do valor de amostra de luma SL [xP ] [ YP].
2. O valor de reshapeLumaSample é derivado da seguinte maneira: ShiftY = 14 invLumaSample = InputPivot [ idxYInv ] + (InvScaleCoeff [ idxYInv ] * ( SL [xP ] [ yP ] ReshapePivot [ idxYInv ]) + (1 << (shiftY - 1))) >> shiftY (800)
3. clipRange = ((reshaper model min bin id> o) && (reshaper model max bin idx <MaxBinldx));
[0330] Quando clipRange é igual a 1, o seguinte se aplica: minVal = 16 << (BitDepthy - 8) maxVal = 235 << (BitDepthy - 8) invLumaSample = Clip3 (minVal, maxVal, invLumaSample)
else (clipRange is equal to O), o seguinte se aplica: invLumaSample = ClipCidx1 (invLumaSample)
[0331]8.5.6.2 Identificação do índice de função por partes para componentes luma
[0332]As entradas para esse processo são um valor de amostra de luma S.
[0333]A saída desse processo é um índice idxS que identifica a parte à qual a amostra S pertence. A variável idxS é derivada da seguinte maneira: for( idxS = O, idxFound = O; idxS <= MaxBinldx; idxS++ ) ( If( (S < ReshapePivot [idxS + 11 )( idxFound = 1 break ) )
[0334] Observa-se que uma implementação alternativa para encontrar a identificação idxS é como segue: if (S < ReshapePivot [ reshaper model min bin idx]) idxS = 0 else if (S >= ReshapePivot [ reshaper model max bin idx]) idxS = MaxBinldx else idxS = findldx ( S, O, MaxBinldx + 1, ReshapePivot [] ) function idx = findldx (val, low, high, pivot[ 1) ( if (high = low <= 1) idx = low else ( mid = (low + high) >> 1 if (val < pivot [mid] )
high = mid else low = mid idx = findldx (val, low, high, pivot[]) ) )

Claims (9)

REIVINDICAÇÕES
1. Método para reconstruir dados de vídeo codificados com um ou mais processadores, CARACTERIZADO pelo fato de que compreende: receber um fluxo de bits codificado compreendendo uma ou mais imagens remodeladas codificadas em uma representação de palavra de código de entrada; receber metadados de remodelagem para uma ou mais imagens remodeladas codificadas no fluxo de bits codificado, em que os metadados de remodelagem compreendem parâmetros para gerar uma função de remodelagem direta com base nos metadados de remodelagem, em que a função de remodelagem direta mapeia os pixels de uma imagem de uma primeira representação de palavra de código para a representação de palavra de código de entrada, em que os metadados de remodelagem compreendem: um primeiro parâmetro indicando um número de compartimentos usados para representar a primeira representação de palavra de código; um segundo parâmetro indicando um índice de compartimento mínimo sendo usado na remodelagem; valores de palavra de código delta absolutos para cada compartimento na representação de palavra de código de entrada; e sinais dos valores de palavra de código delta absolutos para cada compartimento na representação de palavra de código de entrada.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de a função de remodelagem direta é reconstruída como uma função linear por partes com segmentos lineares derivados pelos metadados de remodelagem.
3. Método para remodelagem adaptativa de uma sequência de vídeo com um processador, CARACTERIZADO pelo fato de que compreende: acessar com um processador uma imagem de entrada em uma primeira representação de palavra de código; e gerar uma função de remodelagem direta que mapeia os pixels da imagem de entrada para uma segunda representação de palavra de código, em que gerar a função de remodelagem direta compreende: dividir a imagem de entrada em várias regiões de pixel; atribuir cada uma das regiões de pixel a um dos múltiplos compartimentos de palavras de código de acordo com uma primeira característica de luminância de cada região de pixel; computar uma métrica de compartimento para cada um dos múltiplos compartimentos de palavras de código de acordo com uma segunda característica de luminância de cada uma das regiões de pixel atribuídas a cada um dos múltiplos compartimentos de palavras de código; alocar um número de palavras de código na segunda representação de palavras de código para cada um dos múltiplos compartimentos de palavras de código de acordo com a métrica de cada um dos múltiplos compartimentos de palavras de código e um critério de otimização de taxa - distorção; e gerar a função de remodelagem direta em resposta à alocação de palavras de código na segunda representação de palavras de código para cada um dos múltiplos compartimentos de palavras de código.
4. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que a primeira característica de luminância de uma região de pixel compreende o valor médio de pixel de luminância na região de pixel.
5. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que a segunda característica de luminância de uma região de pixel compreende a variância dos valores de pixel de luminância na região de pixel.
6. Método, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que computar uma métrica de compartimento para um compartimento de palavras de código compreende computar a média das variâncias dos valores de pixel de luminância para todas as regiões de pixels atribuídas ao compartimento de palavras de código.
7. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que alocar um número de palavras de código na segunda representação de palavras de código para um compartimento de palavras de código de acordo com sua métrica de compartimento compreende: não atribuir palavras de código ao compartimento de palavras de código, se nenhuma região de pixel estiver atribuída ao compartimento de palavras de código; atribuir um primeiro número de palavras de código se a métrica de compartimento do compartimento de palavras de código for menor do que um valor limite superior; e caso contrário, atribuir um segundo número de palavras de código ao compartimento de palavras de código.
8. Aparelho, CARACTERIZADO pelo fato de que compreende um processador e configurado para executar um método de acordo com qualquer uma das reivindicações 1 a 7.
9. Meio de armazenamento legível por computador não transitório, CARACTERIZADO pelo fato de que contém instruções executáveis por computador para executar um método com um ou mais processadores, de acordo com qualquer uma das reivindicações 1 a 7.
BR112020015394-0A 2018-02-14 2019-02-13 Remodelagem de imagem em codificação de vídeo usando otimização de taxa - distorção BR112020015394A2 (pt)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US201862630385P 2018-02-14 2018-02-14
US62/630,385 2018-02-14
US201862691366P 2018-06-28 2018-06-28
US62/691,366 2018-06-28
US201862726608P 2018-09-04 2018-09-04
US62/726,608 2018-09-04
US201862739402P 2018-10-01 2018-10-01
US62/739,402 2018-10-01
US201862772228P 2018-11-28 2018-11-28
US62/772,228 2018-11-28
US201862782659P 2018-12-20 2018-12-20
US62/782,659 2018-12-20
US201962792122P 2019-01-14 2019-01-14
US62/792,122 2019-01-14
PCT/US2019/017891 WO2019160986A1 (en) 2018-02-14 2019-02-13 Image reshaping in video coding using rate distortion optimization

Publications (1)

Publication Number Publication Date
BR112020015394A2 true BR112020015394A2 (pt) 2020-12-08

Family

ID=65529870

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020015394-0A BR112020015394A2 (pt) 2018-02-14 2019-02-13 Remodelagem de imagem em codificação de vídeo usando otimização de taxa - distorção

Country Status (18)

Country Link
US (2) US11395009B2 (pt)
EP (1) EP3753253A1 (pt)
JP (3) JP7024102B2 (pt)
KR (6) KR102487032B1 (pt)
CN (6) CN117135355A (pt)
AU (3) AU2019222715B2 (pt)
BR (1) BR112020015394A2 (pt)
CA (2) CA3142715A1 (pt)
CL (3) CL2020002090A1 (pt)
IL (3) IL276062B2 (pt)
MA (1) MA51865A (pt)
MX (1) MX2020008499A (pt)
RU (1) RU2741586C1 (pt)
SG (1) SG11202006779RA (pt)
TW (2) TWI787460B (pt)
UA (1) UA126871C2 (pt)
WO (1) WO2019160986A1 (pt)
ZA (2) ZA202104693B (pt)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102487032B1 (ko) * 2018-02-14 2023-01-11 돌비 레버러토리즈 라이쎈싱 코오포레이션 레이트 왜곡 최적화를 이용한 비디오 코딩에서의 이미지 재성형
EP3759916A1 (en) * 2018-02-28 2021-01-06 Dolby Laboratories Licensing Corporation Linear encoder for image/video processing
WO2020142186A1 (en) * 2019-01-04 2020-07-09 Interdigital Vc Holdings, Inc. Inverse mapping simplification
MX2021008911A (es) 2019-02-01 2021-08-24 Beijing Bytedance Network Tech Co Ltd Se?alizacion de informacion de reformacion en bucle utilizando conjuntos de parametros.
WO2020156528A1 (en) 2019-02-01 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Filtering processes based on in-loop reshaping
KR102393325B1 (ko) * 2019-02-28 2022-05-02 엘지전자 주식회사 Aps 시그널링 기반 비디오 또는 영상 코딩
EP3932063A1 (en) 2019-02-28 2022-01-05 InterDigital VC Holdings, Inc. Method and device for picture encoding and decoding
US11924431B2 (en) * 2019-03-01 2024-03-05 Lg Electronics Inc. LMCS-based image coding method and device therefor
WO2020177703A1 (en) * 2019-03-04 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Signaling of filtering information in video processing
KR102479050B1 (ko) * 2019-03-07 2022-12-19 엘지전자 주식회사 루마 맵핑 및 크로마 스케일링 기반 비디오 또는 영상 코딩
AU2020235190B2 (en) 2019-03-08 2023-06-01 Beijing Bytedance Network Technology Co., Ltd. Constraints on model-based reshaping in video processing
US20220191481A1 (en) * 2019-03-13 2022-06-16 Interdigital Vc Holdings, Inc. In-loop reshaping adaptive reshaper direction
WO2020182219A1 (en) * 2019-03-14 2020-09-17 Beijing Bytedance Network Technology Co., Ltd. Signaling and syntax for in-loop reshaping information
CN113574889B (zh) 2019-03-14 2024-01-12 北京字节跳动网络技术有限公司 环路整形信息的信令和语法
CN113632469B (zh) 2019-03-23 2022-12-13 北京字节跳动网络技术有限公司 默认的环内整形参数
CN117336469A (zh) 2019-04-12 2024-01-02 北京字节跳动网络技术有限公司 根据基于矩阵的帧内预测的变换编码
KR20210145757A (ko) 2019-04-16 2021-12-02 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 인트라 코딩 모드에서의 행렬 도출
CN117528068A (zh) 2019-04-18 2024-02-06 北京字节跳动网络技术有限公司 视频编解码中的跨分量模式中的选择性使用
EP3935855A4 (en) 2019-04-23 2022-09-21 Beijing Bytedance Network Technology Co., Ltd. METHOD OF CROSS-COMPONENT DEPENDENCE REDUCTION
WO2020221372A1 (en) 2019-05-01 2020-11-05 Beijing Bytedance Network Technology Co., Ltd. Context coding for matrix-based intra prediction
JP2022531147A (ja) 2019-05-01 2022-07-06 北京字節跳動網絡技術有限公司 フィルタリングを用いた行列ベースイントラ予測
EP3949395A4 (en) 2019-05-08 2022-06-29 Beijing Bytedance Network Technology Co., Ltd. Conditions for applicability of cross-component coding
US11863754B2 (en) * 2019-05-15 2024-01-02 Hyundai Motor Company Method and for reconstructing chroma block and video decoding apparatus
KR20220011127A (ko) 2019-05-22 2022-01-27 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 업샘플링을 이용한 행렬 기반 인트라 예측
CN114051735A (zh) 2019-05-31 2022-02-15 北京字节跳动网络技术有限公司 基于矩阵的帧内预测中的一步下采样过程
WO2020246790A1 (ko) * 2019-06-03 2020-12-10 엘지전자 주식회사 맵핑된 루마 성분 및 스케일링된 크로마 성분 기반 비디오 또는 영상 코딩
CN117768652A (zh) 2019-06-05 2024-03-26 北京字节跳动网络技术有限公司 视频处理方法、装置、介质、以及存储比特流的方法
CN117478908A (zh) 2019-06-22 2024-01-30 北京字节跳动网络技术有限公司 色度残差缩放的语法元素
JP7460748B2 (ja) 2019-07-07 2024-04-02 北京字節跳動網絡技術有限公司 クロマ残差スケーリングのシグナリング
US11140388B2 (en) * 2019-09-06 2021-10-05 Tencent America LLC Method and apparatus for non-linear loop filtering
US11172237B2 (en) 2019-09-11 2021-11-09 Dolby Laboratories Licensing Corporation Inter-layer dynamic range scalability for HDR video
US11277623B2 (en) 2019-09-17 2022-03-15 Dolby Laboratories Licensing Corporation Block-level lossless video coding using in-loop reshaping
EP4042689A4 (en) 2019-10-28 2023-06-07 Beijing Bytedance Network Technology Co., Ltd. SIGNALING AND SYNTAX ANALYSIS BASED ON A COLOR COMPONENT
JP7391214B2 (ja) * 2019-11-27 2023-12-04 ドルビー ラボラトリーズ ライセンシング コーポレイション Hdr画像化におけるレート制御認識リシェーピング
US11889091B2 (en) 2020-02-21 2024-01-30 Alibaba Group Holding Limited Methods for processing chroma signals
EP4082188A4 (en) 2020-03-19 2024-01-31 Fg innovation co ltd APPARATUS AND METHOD FOR ENCODING VIDEO DATA
JP7460792B2 (ja) * 2020-03-27 2024-04-02 ベイジン、ターチア、インターネット、インフォメーション、テクノロジー、カンパニー、リミテッド ビデオ符号化方法、およびコンピューティング装置
US11601657B2 (en) * 2020-04-02 2023-03-07 Qualcomm Incorporated LUMA mapping with chroma scaling (LMCS) in video coding
CN115462076A (zh) * 2020-04-30 2022-12-09 北京达佳互联信息技术有限公司 用于针对视频编解码的预测相关残差缩放的方法和设备
EP4028987A4 (en) * 2020-05-08 2022-10-12 Huawei Technologies Co., Ltd. ENCODER, DECODER, SYSTEM AND METHOD FOR DETERMINING TONE MAPPING CURVE PARAMETERS
US11985346B2 (en) * 2022-09-20 2024-05-14 Qualcomm Incorporated Encoding high dynamic range video data

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2051527A1 (en) * 2007-10-15 2009-04-22 Thomson Licensing Enhancement layer residual prediction for bit depth scalability using hierarchical LUTs
RU2504011C2 (ru) 2009-03-13 2014-01-10 Долби Лабораторис Лайсэнзин Корпорейшн Многоуровневое сжатие видеоизображения с расширенным динамическим диапазоном, визуальным динамическим диапазоном и широкой цветовой гаммой
WO2011126272A2 (en) 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Method and apparatus for encoding video by using dynamic-range transformation, and method and apparatus for decoding video by using dynamic-range transformation
US9438904B2 (en) * 2012-01-19 2016-09-06 Futurewei Technologies, Inc. Reduced look-up table for LM mode calculation
CN105787909B (zh) 2012-08-08 2018-07-20 杜比实验室特许公司 用于高动态范围图像的图像处理
US9565452B2 (en) 2012-09-28 2017-02-07 Qualcomm Incorporated Error resilient decoding unit association
KR102149115B1 (ko) 2012-11-16 2020-08-27 인터디지털 브이씨 홀딩스 인코포레이티드 높은 동적 범위 이미지들의 프로세싱
PL2941872T3 (pl) * 2013-01-02 2019-03-29 Dolby Laboratories Licensing Corporation Kompatybilne wstecznie kodowanie dla sygnałów wideo o ultra wysokiej rozdzielczości z rozszerzonym zakresem dynamicznym
US9704226B2 (en) * 2013-03-14 2017-07-11 Drs Network & Imaging Systems, Llc System and method for fast digital signal dynamic range reduction using adaptive histogram compaction and stabilization
US9516306B2 (en) * 2013-03-27 2016-12-06 Qualcomm Incorporated Depth coding modes signaling of depth data for 3D-HEVC
US9584811B2 (en) * 2013-06-17 2017-02-28 Dolby Laboratories Licensing Corporation Adaptive reshaping for layered coding of enhanced dynamic range signals
WO2016140954A1 (en) * 2015-03-02 2016-09-09 Dolby Laboratories Licensing Corporation Content-adaptive perceptual quantizer for high dynamic range images
KR101844732B1 (ko) * 2015-03-20 2018-04-02 돌비 레버러토리즈 라이쎈싱 코오포레이션 신호 재정형 근사화
CN107439012B (zh) 2015-04-06 2018-09-25 杜比实验室特许公司 用于环内转换的方法、装置和计算机可读存储介质
EP4020995A1 (en) 2015-07-16 2022-06-29 Dolby Laboratories Licensing Corporation Signal reshaping and coding for hdr and wide color gamut signals
US10652588B2 (en) 2015-09-21 2020-05-12 Vid Scale, Inc. Inverse reshaping for high dynamic range video coding
US10674150B2 (en) 2015-09-23 2020-06-02 Arris Enterprises Llc System and method for reshaping and adaptation of high dynamic range video data
CN106937121B (zh) * 2015-12-31 2021-12-10 中兴通讯股份有限公司 图像解码和编码方法、解码和编码装置、解码器及编码器
US10165275B2 (en) * 2016-01-26 2018-12-25 Dolby Laboratories Licensing Corporation Content-adaptive reshaping for high dynamic range images
US10032262B2 (en) * 2016-02-02 2018-07-24 Dolby Laboratories Licensing Corporation Block-based content-adaptive reshaping for high dynamic range images
EP3226563B1 (en) 2016-03-30 2021-06-23 Dolby Laboratories Licensing Corp. Chroma reshaping
EP3244616A1 (en) * 2016-05-13 2017-11-15 Thomson Licensing A method for encoding an input video comprising a luma component and two chroma components, the method comprising reshaping of said input video based on reshaping functions
EP4064701A1 (en) * 2017-06-29 2022-09-28 Dolby Laboratories Licensing Corporation Integrated image reshaping and video decoding
KR102487032B1 (ko) * 2018-02-14 2023-01-11 돌비 레버러토리즈 라이쎈싱 코오포레이션 레이트 왜곡 최적화를 이용한 비디오 코딩에서의 이미지 재성형

Also Published As

Publication number Publication date
CL2021003512A1 (es) 2022-08-19
AU2019222715A1 (en) 2020-08-27
US11395009B2 (en) 2022-07-19
IL276062B2 (en) 2023-09-01
ZA202206622B (en) 2023-11-29
KR102487032B1 (ko) 2023-01-11
SG11202006779RA (en) 2020-08-28
US20210211738A1 (en) 2021-07-08
JP2021513284A (ja) 2021-05-20
JP7353401B2 (ja) 2023-09-29
JP2023166582A (ja) 2023-11-21
CN117097903A (zh) 2023-11-21
CN117082248A (zh) 2023-11-17
KR102435014B1 (ko) 2022-08-23
IL276062B1 (en) 2023-05-01
IL305463A (en) 2023-10-01
KR20200101990A (ko) 2020-08-28
WO2019160986A1 (en) 2019-08-22
ZA202104693B (en) 2023-01-25
MX2020008499A (es) 2020-09-25
JP7024102B2 (ja) 2022-02-22
RU2021100103A3 (pt) 2021-10-19
EP3753253A1 (en) 2020-12-23
CN117135355A (zh) 2023-11-28
IL276062A (en) 2020-08-31
KR20220087569A (ko) 2022-06-24
AU2021282439A1 (en) 2021-12-23
RU2021100103A (ru) 2021-02-16
CL2020002090A1 (es) 2020-10-23
RU2741586C1 (ru) 2021-01-27
AU2023203814A1 (en) 2023-07-13
AU2021282439B2 (en) 2023-03-30
CA3142715A1 (en) 2019-08-22
CA3091190C (en) 2023-12-05
US20220224946A1 (en) 2022-07-14
CN111713108B (zh) 2023-10-20
TW201941606A (zh) 2019-10-16
CA3091190A1 (en) 2019-08-22
CN117082247A (zh) 2023-11-17
KR20230021187A (ko) 2023-02-13
TW202320544A (zh) 2023-05-16
IL300136A (en) 2023-03-01
TWI787460B (zh) 2022-12-21
JP2022058944A (ja) 2022-04-12
AU2019222715B2 (en) 2021-09-16
KR20220120713A (ko) 2022-08-30
KR102625573B1 (ko) 2024-01-16
KR102457485B1 (ko) 2022-10-24
IL300136B2 (en) 2024-02-01
CN117082246A (zh) 2023-11-17
UA126871C2 (uk) 2023-02-15
KR102409649B1 (ko) 2022-06-22
CN111713108A (zh) 2020-09-25
CL2021000102A1 (es) 2021-07-02
KR20220145423A (ko) 2022-10-28
IL300136B1 (en) 2023-10-01
MA51865A (fr) 2020-12-23
KR20230010062A (ko) 2023-01-17

Similar Documents

Publication Publication Date Title
BR112020015394A2 (pt) Remodelagem de imagem em codificação de vídeo usando otimização de taxa - distorção
BR112019016885A2 (pt) remodelagem de imagem integrada e codificação de vídeo
CN108093265B (zh) 存储用于视频图片解码的计算机程序的机器可读介质
TW202046732A (zh) 視訊編解碼的方法和裝置
RU2772104C2 (ru) Преобразование изображения в кодировании видео с использованием оптимизации зависимости искажения от скорости передачи
OA20172A (en) Image reshaping in video coding using rate distortion optimization.

Legal Events

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