BR112021010123A2 - Método de predição intra de um bloco de uma imagem - Google Patents

Método de predição intra de um bloco de uma imagem Download PDF

Info

Publication number
BR112021010123A2
BR112021010123A2 BR112021010123-3A BR112021010123A BR112021010123A2 BR 112021010123 A2 BR112021010123 A2 BR 112021010123A2 BR 112021010123 A BR112021010123 A BR 112021010123A BR 112021010123 A2 BR112021010123 A2 BR 112021010123A2
Authority
BR
Brazil
Prior art keywords
block
sample
weighting factor
sample value
intra
Prior art date
Application number
BR112021010123-3A
Other languages
English (en)
Inventor
Alexey Konstantinovich Filippov
Vasily Alexeevich Rufitskiy
Jianle Chen
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112021010123A2 publication Critical patent/BR112021010123A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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
    • 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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

MÉTODO DE PREDIÇÃO INTRA DE UM BLOCO DE UMA IMAGEM. A presente revelação fornece métodos e dispositivos de predição intra de um bloco de uma imagem. O método compreende para uma amostra do bloco: obter um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra DC; multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; adicionar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é ((2«p)-wL-wT), em que p é um parâmetro do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical.

Description

MÉTODO DE PREDIÇÃO INTRA DE UM BLOCO DE UMA IMAGEM CAMPO TÉCNICO
[001] A presente revelação diz respeito ao campo técnico de codificação e decodificação de imagem e/ou vídeo, e em particular a um método e aparelho para predição intra.
ANTECEDENTES
[002] O vídeo digital tem sido usado amplamente desde a introdução de discos DVD. Antes da transmissão o vídeo é codificado e é transmitido usando um meio de transmissão. O espectador recebe o vídeo e usa um dispositivo de visualização para decodificar e exibir o vídeo. Ao longo dos anos a qualidade de vídeo tem sido aperfeiçoada, por exemplo, por causa de resoluções, profundidades de cores e taxas de quadros mais altas. Isto tem resultado em fluxos de dados maiores que atualmente são transportados comumente pela Internet e redes de comunicações móveis.
[003] Vídeos de maior resolução, entretanto, tipicamente exigem mais largura de banda já que eles têm mais informação. A fim de reduzir exigências de largura de banda padrões de codificação de vídeo envolvendo compressão do vídeo têm sido introduzidos. Quando o vídeo é codificado as exigências de largura de banda (ou exigências de memória correspondentes no caso de armazenamento) são reduzidas. Frequentemente esta redução vem com o custo de qualidade. Assim, os padrões de codificação de vídeo tentam descobrir um equilíbrio entre exigências de largura de banda e qualidade.
[004] A Codificação de Vídeo de Alta Eficiência (HEVC) é um exemplo de um padrão de codificação de vídeo que é conhecido comumente para as pessoas versadas na técnica. Em HEVC é usado dividir uma unidade de codificação (CU) em unidades de predição (PU) ou unidades de transformada (TUs). O padrão de próxima geração Codificação de Vídeo Versátil (VVC) é o projeto de vídeo conjunto mais recente das organizações de normalização Grupo de Especialistas em Codificação de Vídeo (VCEG) ITU-T e Grupo de Especialistas de Imagens em Movimento (MPEG) ISO/IEC, trabalhando conjuntamente em uma parceria conhecida como a equipe Conjunta de Exploração de Vídeo (JVET). VVC é também referida como padrão ITU-T H.266/Codificação de Vídeo de Próxima Geração (NGVC). Em VVC, os conceitos de múltiplos tipos de partição devem ser removidos, isto é, a separação dos conceitos de CU, PU e TU exceto tal como necessário para CUs que têm um tamanho muito grande para o comprimento máximo de transformada, e suporta mais flexibilidade para formas de partição de CU.
[005] Processamento destas unidades de codificação (CUs) (também referidas como blocos) depende de seu tamanho, posição espacial e de um modo de codificação especificado por um codificador. Os modos de codificação podem ser classificados em dois grupos de acordo com o tipo de predição: modos de predição intra e de predição inter. Os modos de predição intra usam amostras da mesma imagem (também referida como quadro ou cena) para gerar amostras de referência para calcular os valores de predição para as amostras do bloco sendo reconstruído. A predição intra é também referida como predição espacial. Os modos de predição inter são projetados para predição temporal e usam amostras de referência de imagens anteriores ou seguintes para predizer amostras do bloco da imagem atual.
[006] ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) estão estudando a potencial necessidade de padronização de tecnologia de codificação de vídeo futura com uma capacidade de compressão que excede significativamente aquela do padrão HEVC atual (incluindo suas extensões atuais e extensões de curto prazo para codificação de conteúdo de tela e codificação de alta faixa dinâmica). Os grupos estão trabalhando conjuntamente nesta atividade de exploração em um esforço de colaboração conjunta conhecido como a Equipe Conjunta de Exploração de Vídeo (JVET) para avaliar projetos de tecnologia de compressão propostos por seus especialistas nesta área.
[007] O VTM (Modelo de Teste Versátil) versão 3.0 usa 93 modos de predição intra, e várias ferramentas de suavização intra, incluindo filtragem de interpolação intra de subpixel de quatro derivações e combinação de predição dependente de posição (PDPC). A PDPC é proposta como um mecanismo unificado de modificação de amostras preditas que são um resultado de predição intra usando modos de predição intra DC, PLANAR ou angular.
SUMÁRIO
[008] Modalidades do presente pedido fornecem aparelhos e métodos para predição intra aperfeiçoada de um bloco atual de uma imagem. A invenção é definida pelas reivindicações independentes. As reivindicações dependentes descrevem modalidades vantajosas. Formas de implementação adicionais são evidentes a partir da descrição e das figuras.
[009] De acordo com um primeiro aspecto, um método de predição intra de um bloco de uma imagem é fornecido, o método compreendendo para uma amostra do bloco: obter um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra DC; multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; adicionar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é ((2 ≪ 𝑝) − 𝑤𝐿 − 𝑤𝑇), em que p é um parâmetro do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical.
[010] De acordo com um segundo aspecto, um método de predição intra de um primeiro bloco e de um segundo bloco de uma imagem é fornecido, o método compreendendo para uma amostra do primeiro bloco e para uma amostra do segundo bloco: obter (S100) um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra; multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; adicionar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é ((2 ≪ 𝑝) − 𝑤𝐿 − 𝑤𝑇), p é um parâmetro do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical, em que o modo de predição intra usado para obter os valores de amostras preditas para o primeiro bloco é um modo de predição intra DC, e o modo de predição intra usado para obter os valores de amostras preditas para o segundo bloco é um modo de predição intra PLANAR.
[011] Por exemplo, o parâmetro do fator de ponderação de amostra é uma precisão do fator de ponderação de amostra.
[012] Em algumas modalidades, o valor de amostra predita normalizada pode ser o resultado final do processo de predição.
[013] O método de acordo com o primeiro ou segundo aspecto pode permitir predição intra aperfeiçoada de um bloco atual, em que a ocorrência de valores de amostras preditas errôneos pode ser impedida em um caso de predição intra DC de uma amostra atual.
[014] Em uma modalidade, um mecanismo de predição intra PLANAR é usado para calcular o valor adicional.
[015] Isto pode possibilitar um grau reduzido de complexidade ao simplificar um procedimento para predição intra já que um mecanismo de predição intra planar já implementado pode ser reutilizado para cálculo dos valores adicionais, os quais são usados para determinação do valor de amostra predita não normalizada.
[016] Em uma modalidade, o fator de ponderação de amostra é (64-wL-wT).
[017] Em uma modalidade, o valor adicional é uma soma de uma ou mais parcelas, incluindo uma parcela dependendo de uma ou mais das amostras de referência.
[018] Por exemplo, a uma ou mais parcelas pode incluir um deslocamento de arredondamento.
[019] Adicionar um deslocamento de arredondamento pode permitir que o resultado do deslocamento aritmético para a direita da representação inteira da amostra predita não normalizada seja arredondado de modo apropriado.
[020] Em uma modalidade, a parcela dependendo de uma ou mais amostras de referência é 𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1, e 𝑅𝑥,−1 e 𝑅−1,𝑦 representam valores das amostras de referência mais próximas localizadas acima e à esquerda da amostra predita
[021] Em uma modalidade, a imagem é parte de uma sequência de vídeo.
[022] Em uma modalidade, o fator de ponderação horizontal wL e o fator de ponderação vertical wT são uma potência de dois.
[023] Isto permite que um cálculo de uma multiplicação com os ditos fatores de ponderação seja implementado usando uma operação de deslocamento de uma representação inteira do fator com o qual o fator de ponderação deve ser multiplicado.
[024] Em uma modalidade, o fator de ponderação horizontal é 𝑤𝐿 = (2 ≪ (𝑝 − 1)) ≫ ((𝑥 ≪ 1) ≫ 𝑛𝑆𝑐𝑎𝑙𝑒), em que x é uma coordenada horizontal da amostra, o fator de ponderação vertical é 𝑤𝑇 = (2 ≪ (𝑝 − 1)) ≫ ((𝑦 ≪ 1) ≫ 𝑛𝑆𝑐𝑎𝑙𝑒), em que y é uma coordenada vertical da amostra e nScale é um parâmetro de escala.
[025] Em uma modalidade, o parâmetro de escala nScale é derivado de um tamanho do bloco.
[026] Derivar o parâmetro nScale do tamanho do bloco pode permitir calcular os pesos horizontal e vertical em um modo adequado, melhorando desse modo a precisão de predição.
[027] Em uma modalidade, o parâmetro de escala nScale é determinado como ((Log2(𝑛𝑇𝑏𝑊) + Log2(𝑛𝑇𝑏𝐻) − 2) ≫ 2) onde nTbW é uma largura do bloco e nTbH é uma altura do bloco.
[028] Em uma modalidade, um valor de amostra predita normalizada é computado do valor de amostra predita, incluindo calcular (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 + (64 − 𝑤𝐿 − 𝑤𝑇) × 𝑃(𝑥, 𝑦) + 32) ≫ 6 onde 𝑃(𝑥, 𝑦) é o valor de amostra predita, 𝑅𝑥,−1, 𝑅−1,𝑦 representam os valores das amostras de referência mais próximas localizadas acima e à esquerda da amostra predita, 𝑤𝐿 é um fator de ponderação horizontal, e 𝑤𝑇 é um fator de ponderação vertical.
[029] Na modalidade, o deslocamento de arredondamento adicionado é 32.
[030] Isto pode possibilitar um resultado de cálculo arredondado de modo apropriado da operação de deslocamento para a direita >> 6.
[031] Em uma modalidade, a normalização do valor de amostra predita não normalizada resulta em um valor de amostra predita normalizada.
[032] Em uma modalidade, a pluralidade de amostras do bloco compreende cada amostra do bloco.
[033] É fornecido adicionalmente um método de codificar ou decodificar uma imagem, compreendendo obter valores de amostras preditas normalizadas ao realizar as etapas de qualquer um de métodos indicados anteriormente; e adicionar valores residuais aos valores de amostras preditas normalizadas resultando em valores de amostras reconstruídas.
[034] De acordo com um terceiro aspecto, um dispositivo para codificar ou decodificar uma imagem é fornecido, o dispositivo compreendendo conjunto de circuitos de processamento configurado para realizar qualquer um dos métodos indicados anteriormente.
[035] Em uma modalidade, o conjunto de circuitos de processamento compreende um ou mais processadores e um meio não transitório legível por computador conectado ao um ou mais processadores, em que o meio não transitório legível por computador carrega um código de programa que, quando executado pelo um ou mais processadores, induz o dispositivo para realizar o método.
[036] De acordo com um quarto aspecto, um meio não transitório legível por computador é fornecido, o meio não transitório legível por computador carregando um código de programa que, quando executado por um dispositivo de computador, induz o dispositivo de computador para realizar qualquer um dos métodos indicados anteriormente.
[037] De acordo com um quinto aspecto, um programa de computador é fornecido, o programa de computador compreendendo código de programa para realizar qualquer um dos métodos indicados anteriormente.
[038] De acordo com um aspecto, um dispositivo codificador é fornecido, o dispositivo codificador sendo configurado para realizar predição intra de um bloco de uma imagem, compreendendo: um obtentor configurado para obter um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra DC; um multiplicador configurado para multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; um somador configurado para adicionar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e um normalizador configurado para normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é ((2 ≪ 𝑝) − 𝑤𝐿 − 𝑤𝑇), em que p é um parâmetro do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical.
[039] De acordo com um aspecto, um dispositivo codificador é fornecido, o dispositivo codificador sendo configurado para realizar predição intra de um primeiro bloco e de um segundo bloco de uma imagem, compreendendo: um obtentor configurado para obter um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra; um multiplicador configurado para multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; um somador configurado para adicionar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e um normalizador configurado para normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é ((2 ≪ 𝑝) − 𝑤𝐿 − 𝑤𝑇), em que p é um parâmetro do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical. O modo de predição intra usado para obter o valor de amostra predita para uma amostra do primeiro bloco é um modo de predição intra DC, e o modo de predição intra usado para obter o valor de amostra predita para uma amostra do segundo bloco é um modo de predição intra planar.
[040] De acordo com um aspecto, um dispositivo decodificador é fornecido, o dispositivo decodificador sendo configurado para realizar predição intra de um bloco de uma imagem, compreendendo: um obtentor configurado para obter um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra DC; um multiplicador configurado para multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; um somador configurado para adicionar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e um normalizador configurado para normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é ((2 ≪ 𝑝) − 𝑤𝐿 − 𝑤𝑇), em que p é um parâmetro do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical.
[041] De acordo com um aspecto, um dispositivo decodificador é fornecido, o dispositivo decodificador sendo configurado para realizar predição intra de um primeiro bloco e de um segundo bloco de uma imagem, compreendendo: um obtentor configurado para obter um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra; um multiplicador configurado para multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; um somador configurado para adicionar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e um normalizador configurado para normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é ((2 ≪ 𝑝) − 𝑤𝐿 − 𝑤𝑇), em que p é um parâmetro do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical. O modo de predição intra usado para obter o valor de amostra predita para uma amostra do primeiro bloco é um modo de predição intra DC, e o modo de predição intra usado para obter o valor de amostra predita para uma amostra do segundo bloco é um modo de predição intra planar.
[042] De acordo com um aspecto, um dispositivo preditor para predição intra de um bloco de uma imagem compreende: um obtentor configurado para obter, para uma amostra do bloco, um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra DC; um multiplicador configurado para multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; um somador configurado para adicionar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e um normalizador configurado para normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é ((2 ≪ 𝑝) − 𝑤𝐿 − 𝑤𝑇), em que p é um parâmetro do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical.
[043] De acordo com um aspecto, um dispositivo preditor para predição intra de um primeiro bloco e de um segundo bloco de uma imagem compreende: um obtentor configurado para obter, para uma amostra do primeiro bloco ou do segundo bloco, um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra; um multiplicador configurado para multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; um somador configurado para adicionar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e um normalizador configurado para normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é ((2 ≪ 𝑝) − 𝑤𝐿 − 𝑤𝑇), p é um parâmetro do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical. O modo de predição intra usado para obter o valor de amostra predita para o primeiro bloco é um modo de predição intra DC, e o modo de predição intra usado para obter o valor de amostra predita para o segundo bloco é um modo de predição intra planar.
[044] De acordo com um aspecto, um método de predição intra de um bloco de uma imagem compreende para uma amostra (x,y) do bloco: obter um valor de amostra predita P(x,y) de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra DC; e gerar um valor de amostra predita resultante P’(x,y) com base no valor de amostra predita P(x,y) e com base nos valores de amostras de referência R(x,-1) e R(-1,y), em que P’(x,y) = (wL×R(-1,y) + wT×R_(x,-1) + (64-wL- wT)×P(x,y)+32)) ≫ 6 em que o valor de amostra de referência R(x,-1) é um valor de uma amostra (x,-1) localizada acima do bloco, o valor de amostra de referência R(-1,y) é um valor de uma amostra (-1,y) localizada à esquerda do bloco, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical.
[045] Detalhes de uma ou mais modalidades são expostos nos desenhos anexos e na descrição a seguir. Outros recursos, objetivos e vantagens estarão aparentes a partir da descrição, desenhos e reivindicações.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[046] No exposto a seguir modalidades da revelação são descritas com mais detalhes com referência para as figuras e desenhos anexos, nos quais: a figura 1A é um diagrama de blocos mostrando um exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da revelação; a figura 1B é um diagrama de blocos mostrando outro exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da revelação; a figura 2 é um diagrama de blocos mostrando um exemplo de um codificador de vídeo configurado para implementar modalidades da revelação; a figura 3 é um diagrama de blocos mostrando uma estrutura de exemplo de um decodificador de vídeo configurado para implementar modalidades da revelação; a figura 4 é um diagrama de blocos ilustrando um exemplo de um aparelho de codificação ou de um aparelho de decodificação; a figura 5 é um diagrama de blocos ilustrando outro exemplo de um aparelho de codificação ou de um aparelho de decodificação; a figura 6 ilustra um exemplo de direções e modos de predição intra Angular e o valor associado de pang para direções de predição vertical; a figura 7 ilustra um exemplo de Transformação de pref para p1,ref para um bloco 4x4; a figura 8 ilustra um exemplo de Construção de p1,ref para predição angular horizontal; a figura 9 ilustra um exemplo de Construção de p1,ref para predição angular vertical;
a figura 10A ilustra um exemplo de direções de predição intra Angular e os modos de predição intra associados em JEM e BMS-1; a figura 10B ilustra um exemplo de direções de predição intra Angular e os modos de predição intra associados em VTM-2; a figura 10C ilustra um exemplo de direções de predição intra Angular e os modos de predição intra associados em VTM-3; a figura 11 ilustra um exemplo de direções de predição intra Angular e os modos de predição intra associados em HEVC; a figura 12 ilustra um exemplo de QTBT; a figura 13 ilustra um exemplo de pesos de PDPC de modo DC para as posições (0, 0) e (1, 0) dentro de um bloco 4x4; a figura 14 ilustra um exemplo de predição intra de um bloco a partir de amostras de referência do lado de referência principal; a figura 15 ilustra um método de predição intra de um bloco de uma imagem de acordo com uma modalidade; a figura 16A ilustra um dispositivo codificador ou um dispositivo decodificador de acordo com uma modalidade; a figura 16B ilustra um dispositivo codificador ou um dispositivo decodificador de acordo com uma modalidade; a figura 17 ilustra um exemplo de pesos de PDPC de modo DC para as posições (0, 0) e (1, 0) dentro de um bloco 4x4; a figura 18 ilustra um exemplo de predição intra de um bloco de amostras.
[047] No exposto a seguir números de referência idênticos se referem a recursos idênticos ou pelo menos equivalentes funcionalmente se não especificado explicitamente de outro modo.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[048] Na descrição seguinte, referência é feita para as figuras anexas, as quais formam parte da revelação, e que mostram, a título de ilustração, aspectos específicos de modalidades da revelação ou aspectos específicos nos quais modalidades da presente revelação podem ser usadas. É entendido que modalidades da revelação podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não representadas nas figuras. A descrição detalhada a seguir, portanto, não é para ser considerada com um sentido de limitação, e o escopo da presente revelação é definido pelas reivindicações anexas.
[049] Por exemplo, é entendido que uma revelação em conexão com um método descrito também pode ser verdadeira para um dispositivo ou sistema correspondente configurado para realizar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de etapas de método específicas for descrita, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar a etapa ou uma pluralidade de etapas de método descrita (por exemplo, uma unidade realizando a uma ou pluralidade de etapas, ou cada uma de uma pluralidade de unidades realizando uma ou mais da pluralidade de etapas), mesmo se tal uma ou mais unidades não estiverem descritas ou ilustradas explicitamente nas figuras. Por outro lado, por exemplo, se um aparelho específico for descrito com base em uma ou em uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir uma etapa para realizar a funcionalidade da uma ou da pluralidade de unidades (por exemplo, uma etapa realizando a funcionalidade da uma ou da pluralidade de unidades, ou cada uma de uma pluralidade de etapas realizando a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tal uma ou pluralidade de etapas não estiver descrita ou ilustrada explicitamente nas figuras. Adicionalmente, é entendido que os recursos das várias modalidades e/ou aspectos exemplares descritos neste documento podem ser combinados entre si, a não ser que notado especificamente de outro modo.
[050] A codificação de vídeo tipicamente se refere ao processamento de uma sequência de imagens, as quais formam o vídeo ou sequência de vídeo. Em vez de o termo “imagem”, o termo “quadro” ou “cena” pode ser usado como sinônimo no campo de codificação de vídeo. A codificação de vídeo (ou codificação de uma maneira geral) compreende duas partes, codificação de vídeo e decodificação de vídeo. A codificação de vídeo é realizada no lado de origem, tipicamente compreendendo processar (por exemplo, por meio de compressão) as imagens de vídeo originais para reduzir a quantidade de dados exigidos para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficiente). Decodificação de vídeo é realizada no lado de destino e tipicamente compreende o processamento inverso comparado ao do codificador para reconstruir as imagens de vídeo. Modalidades se referindo à “codificação” de imagens de vídeo (ou imagens de uma maneira geral) devem ser entendidas como se relacionando com “codificação” ou “decodificação” de imagens de vídeo ou de respectivas sequências de vídeo. A combinação de a parte de codificação e a parte de decodificação é também referida como CODEC (Codificação e Decodificação).
[051] Em caso de codificação de vídeo sem perda, as imagens de vídeo originais podem ser reconstruídas, as imagens de vídeo reconstruídas têm a mesma qualidade das imagens de vídeo originais (assumindo não ter perda de transmissão ou outra perda de dados durante armazenamento ou transmissão). Em caso de codificação de vídeo com perda, compressão adicional, por exemplo, por meio de quantização, é realizada para reduzir a quantidade de dados representando as imagens de vídeo, as quais não podem ser reconstruídas completamente no decodificador, a qualidade das imagens de vídeo reconstruídas é inferior ou pior comparada à qualidade das imagens de vídeo originais.
[052] Vários padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbridos com perda” (por exemplo, combinam predição espacial e temporal no domínio da amostra e codificação de transformada 2D para aplicar quantização no domínio da transformada). Cada imagem de uma sequência de vídeo tipicamente é particionada em um conjunto de blocos não se sobrepondo, e a codificação tipicamente é realizada em um nível de bloco. Em outras palavras, no codificador o vídeo tipicamente é processado, isto é, codificado, em um nível de bloco (bloco de vídeo), por exemplo, ao usar predição espacial (intra imagem) e/ou predição temporal (inter imagens) para gerar um bloco de predição, subtrair o bloco de predição do bloco atual (bloco processado atualmente / a ser processado) para obter um bloco residual, transformar o bloco residual e quantizar o bloco residual no domínio da transformada para reduzir a quantidade de dados a ser transmitidos (compressão), enquanto que no decodificador o processamento inverso comparado ao do codificador é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica o laço de processamento de decodificador de tal maneira que ambos gerarão predições idênticas (por exemplo, predições intra e inter) e/ou reconstruções para processar, por exemplo, codificar, os blocos subsequentes.
[053] No exposto a seguir modalidades de um sistema de codificação de vídeo 10, de um codificador de vídeo 20 e de um decodificador de vídeo 30 são descritas com base nas figuras 1 a 3.
[054] A figura 1A é um diagrama de blocos esquemático ilustrando um sistema de codificação de exemplo 10, por exemplo, um sistema de codificação de vídeo 10 (ou resumidamente sistema de codificação 10) que pode utilizar técnicas do presente pedido. O codificador de vídeo 20 (ou resumidamente codificador 20) e o decodificador de vídeo 30 (ou resumidamente decodificador 30) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar técnicas de acordo com vários exemplos descritos no presente pedido.
[055] Tal como mostrado na figura 1A, o sistema de codificação 10 compreende um dispositivo de origem 12 configurado para fornecer os dados de imagem codificados 21, por exemplo, para um dispositivo de destino 14 para decodificar os dados de imagem codificados 21.
[056] O dispositivo de origem 12 compreende um codificador 20, e adicionalmente pode compreender,
opcionalmente, uma fonte de imagem 16, um pré-processador (ou unidade de pré-processamento) 18, por exemplo, um pré- processador de imagem 18 e uma interface de comunicação ou unidade de comunicação 22.
[057] A fonte de imagem 16 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, uma câmera para capturar uma imagem de mundo real e/ou qualquer tipo de dispositivo de geração de imagem, por exemplo, um processador de gráficos de computador para gerar uma imagem animada de computador, ou qualquer tipo de outro dispositivo para obter e/ou fornecer uma imagem de mundo real, uma imagem gerada por computador (por exemplo, um conteúdo de tela, uma imagem de realidade virtual (VR)) e/ou qualquer combinação dos mesmos (por exemplo, uma imagem de realidade aumentada (AR)). A fonte de imagem pode ser qualquer tipo de memória ou armazenamento armazenando qualquer uma das imagens mencionadas acima.
[058] Em distinção ao pré-processador 18 e ao processamento realizado pela unidade de pré-processamento 18, a imagem ou dados de imagem 17 também pode ser referido como a imagem bruta ou dados de imagem bruta 17.
[059] O pré-processador 18 é configurado para receber os dados de imagem (bruta) 17 e para realizar pré-processamento nos dados de imagem 17 para obter uma imagem pré-processada 19 ou os dados de imagem pré-processados 19. Pré- processamento realizado pelo pré-processador 18 pode compreender, por exemplo, aparo, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor ou remoção de ruído. Pode ser entendido que a unidade de pré- processamento 18 pode ser um componente opcional.
[060] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processados 19 e fornecer os dados de imagem codificados 21 (detalhes adicionais serão descritos a seguir, por exemplo, com base na figura 2).
[061] A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e para transmitir os dados de imagem codificados 21 (ou qualquer versão processada adicionalmente dos mesmos) por meio do canal de comunicação 13 para outro dispositivo, por exemplo, para o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[062] O dispositivo de destino 14 compreende um decodificador 30 (por exemplo, um decodificador de vídeo 30), e adicionalmente, isto é, opcionalmente, pode compreender uma interface de comunicação ou unidade de comunicação 28, um pós-processador 32 (ou unidade de pós- processamento 32) e um dispositivo de exibição 34.
[063] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 (ou qualquer versão processada adicionalmente dos mesmos), por exemplo, diretamente do dispositivo de origem 12 ou de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados, e fornecer os dados de imagem codificados 21 para o decodificador 30.
[064] A interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas para transmitir ou receber os dados de imagem codificados 21 ou os dados codificados 13 por meio de um enlace de comunicação direta entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, uma conexão direta com fio ou sem fio, ou por meio de qualquer tipo de rede, por exemplo, uma rede com fio ou sem fio ou qualquer combinação dos mesmos, ou qualquer tipo de rede privada e pública, ou qualquer tipo de combinação dos mesmos.
[065] A interface de comunicação 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 21 em um formato apropriado, por exemplo, pacotes, e/ou processar os dados de imagem codificados usando qualquer tipo de codificação ou processamento de transmissão para transmissão por meio de um enlace de comunicação ou rede de comunicação.
[066] A interface de comunicação 28, formando a contraparte da interface de comunicação 22, pode ser, por exemplo, configurada para receber os dados transmitidos e processar os dados de transmissão usando qualquer tipo de decodificação ou processamento e/ou descompactação de transmissão correspondente para obter os dados de imagem codificados 21.
[067] Ambas de a interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecional tal como indicado pela seta para o canal de comunicação 13 na figura 1A apontando do dispositivo de origem 12 para o dispositivo de destino 14, ou interfaces de comunicação bidirecional, e podem ser configuradas, por exemplo, para enviar e receber mensagens, por exemplo, para configurar uma conexão, para confirmação e trocar qualquer outra informação relacionada com o enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificados.
[068] O decodificador 30 é configurado para receber os dados de imagem codificados 21 e fornecer os dados de imagem decodificados 31 ou uma imagem decodificada 31 (detalhes adicionais serão descritos a seguir, por exemplo, com base na figura 3 ou na figura 5).
[069] O pós-processador 32 do dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também chamados de dados de imagem reconstruída), por exemplo, a imagem decodificada 31, para obter os dados de imagem pós-processados 33, por exemplo, uma imagem pós-processada 33. O pós-processamento realizado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, aparo, ou reamostragem, ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para exibição, por exemplo, pelo dispositivo de exibição 34.
[070] O dispositivo de exibição 34 do dispositivo de destino 14 é configurado para receber os dados de imagem pós-processados 33 para exibir a imagem, por exemplo, para um usuário ou espectador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de tela para representar a imagem reconstruída, por exemplo, um mostrador ou monitor integrado ou externo. As telas podem compreender, por exemplo, telas de cristal líquido (LCD), telas de diodos orgânicos emissores de luz (OLED), telas de plasma, projetores, telas de microLEDs, cristal líquido em silício
(LCoS), processador de luz digital (DLP) ou qualquer outro tipo de tela.
[071] Embora a figura 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, modalidades de dispositivos também podem compreender ambos ou ambas as funcionalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente. Em tais modalidades o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente podem ser implementados usando o mesmo hardware e/ou software ou por meio de hardware e/ou software separado ou qualquer combinação dos mesmos.
[072] Tal como ficará aparente para uma pessoa versada na técnica com base na descrição, a existência e divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou do dispositivo de destino 14 tais como mostradas na figura 1A podem variar dependendo do dispositivo e aplicação real.
[073] Cada um de o codificador 20 (por exemplo, um codificador de vídeo 20) e o decodificador 30 (por exemplo, um decodificador de vídeo 30) pode ser implementado como qualquer um de uma variedade de conjuntos de circuitos adequados tais como mostrados na figura 1B, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, hardware ou quaisquer combinações dos mesmos. Se as técnicas forem implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento não transitório legível por computador adequado e pode executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta revelação. Qualquer um dos mencionados anteriormente (incluindo hardware, software, uma combinação de hardware e software, etc.) pode ser considerado como sendo um ou mais processadores. Cada um de o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, um ou outro dos quais pode ser integrado como parte de um codificador/decodificador (CODEC) combinado em um respectivo dispositivo.
[074] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma faixa ampla de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou estacionários, por exemplo, notebook ou laptops, telefones móveis, telefones inteligentes, tablets, câmeras, computadores de mesa, conversores de sinais, televisões, dispositivos de exibição, reprodutores de mídias digitais, consoles de jogos de computador de vídeo, dispositivos de fluxo contínuo de vídeo (tais como servidores de serviços de conteúdo ou servidores de entrega de conteúdo), dispositivo receptor de difusão, dispositivo transmissor difusão, ou similar e podem usar ou não qualquer tipo de sistema operacional. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio. Assim, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[075] Em alguns casos, o sistema de codificação de vídeo 10 ilustrado na figura 1A é meramente um exemplo e as técnicas do presente pedido podem ser aplicadas para configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, dados são recuperados de uma memória local e transferidos por meio de uma rede ou similar. Um dispositivo de codificação de vídeo pode codificar e armazenar dados em memória, e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados de memória. Em alguns exemplos, a codificação e a decodificação são realizadas por dispositivos que não comunicam entre si, mas simplesmente codificam dados em memória e/ou recuperam e decodificam dados de memória.
[076] A figura 1B é um diagrama ilustrativo de outro sistema de codificação de vídeo de exemplo 40 incluindo o codificador 20 da figura 2 e/ou o decodificador 30 da figura 3 de acordo com uma modalidade exemplar. O sistema 40 pode implementar técnicas de acordo com vários exemplos descritos no presente pedido. Na implementação ilustrada, o sistema de codificação de vídeo 40 pode incluir o(s) dispositivo(s) de imageamento 41, o codificador de vídeo 100, o decodificador de vídeo 30 (e/ou um codificador de vídeo implementado por meio do conjunto de circuitos lógicos 47 da(s) unidade(s) de processamento 46), uma antena 42, um ou mais processadores 43, um ou mais armazenamentos de memória 44 e/ou um dispositivo de exibição 45.
[077] Tal como ilustrado, o(s) dispositivo(s) de imageamento 41, a antena 42, a(s) unidade(s) de processamento 46, o conjunto de circuitos lógicos 47, o codificador de vídeo 20, o decodificador de vídeo 30, o(s) processador(es) 43, o(s) armazenamento(s) de memória 44 e/ou o dispositivo de exibição 45 podem ser capazes de comunicação entre si. Tal como discutido, embora ilustrado com ambos de o codificador de vídeo 20 e o decodificador de vídeo 30, o sistema de codificação de vídeo 40 pode incluir somente o codificador de vídeo 20 ou somente o decodificador de vídeo 30 em vários exemplos.
[078] Tal como mostrado, em alguns exemplos, o sistema de codificação de vídeo 40 pode incluir a antena 42. A antena 42 pode ser configurada para transmitir ou receber um fluxo de bits codificados de dados de vídeo, por exemplo. Adicionalmente, em alguns exemplos, o sistema de codificação de vídeo 40 pode incluir o dispositivo de exibição 45. O dispositivo de exibição 45 pode ser configurado para apresentar dados de vídeo. Tal como mostrado, em alguns exemplos, o conjunto de circuitos lógicos 47 pode ser implementado por meio da(s) unidade(s) de processamento 46. A(s) unidade(s) de processamento 46 pode(m) incluir lógica de circuito integrado de aplicação específica (ASIC), processador(es) de gráficos, processador(es) de uso geral ou similar. O sistema de codificação de vídeo 40 também pode incluir o(s) processador(es) opcional(s) 43, o(s) qual(s) de modo similar pode(m) incluir lógica de circuito integrado de aplicação específica (ASIC), processador(es) de gráficos, processador(es) de uso geral ou similar. Em alguns exemplos, o conjunto de circuitos lógicos 47 pode ser implementado por meio de hardware, hardware dedicado de codificação de vídeo ou similar, e o(s) processador(es) 43 pode(m) ser implementado(s) por meio de software de uso geral, sistemas operacionais ou similar. Além disso, o(s) armazenamento(s) de memória 44 pode(m) ser qualquer tipo de memória tal como memória volátil (por exemplo, Memória de Acesso Aleatório Estática (SRAM), Memória de Acesso Aleatório Dinâmica (DRAM), etc.) ou memória não volátil (por exemplo, memória flash, etc.) e assim por diante. Em um exemplo não limitativo, o(s) armazenamento(s) de memória 44 pode(m) ser implementado(s) por meio de memória cache. Em alguns exemplos, o conjunto de circuitos lógicos 47 pode acessar o(s) armazenamento(s) de memória 44 (para implementação de um buffer de imagens, por exemplo). Em outros exemplos, o conjunto de circuitos lógicos 47 e/ou a(s) unidade(s) de processamento 46 podem incluir armazenamentos de memória (por exemplo, cache ou similar) para a implementação de um buffer de imagens ou similar.
[079] Em alguns exemplos, o codificador de vídeo 20 implementado por meio de conjunto de circuitos lógicos pode incluir um buffer de imagens (por exemplo, por meio da(s) unidade(s) de processamento 420 ou do(s) armazenamento(s) de memória 44) e uma unidade de processamento gráfico (por exemplo, por meio da(s) unidade(s) de processamento 46). A unidade de processamento gráfico pode ser acoplada comunicativamente ao buffer de imagens. A unidade de processamento gráfico pode incluir o codificador de vídeo 20 tal como implementado por meio do conjunto de circuitos lógicos 47 para incorporar os vários módulos tais como discutidos em relação à figura 2 e/ou qualquer outro sistema ou subsistema codificador descrito neste documento. O conjunto de circuitos lógicos pode ser configurado para realizar as várias operações tais como discutidas neste documento.
[080] O decodificador de vídeo 30 pode ser implementado em um modo similar tal como implementado por meio do conjunto de circuitos lógicos 47 para incorporar os vários módulos tais como discutidos em relação ao decodificador 30 da figura 3 e/ou qualquer outro sistema ou subsistema decodificador descrito neste documento. Em alguns exemplos, o decodificador de vídeo 30 pode ser implementado por meio de conjunto de circuitos lógicos e pode incluir um buffer de imagens (por exemplo, por meio da(s) unidade(s) de processamento 46 ou do(s) armazenamento(s) de memória 44)) e uma unidade de processamento gráfico (por exemplo, por meio da(s) unidade(s) de processamento 46). A unidade de processamento gráfico pode ser acoplada comunicativamente ao buffer de imagens. A unidade de processamento gráfico pode incluir o decodificador de vídeo 30 tal como implementado por meio do conjunto de circuitos lógicos 47 para incorporar os vários módulos tais como discutidos em relação à figura 3 e/ou qualquer outro sistema ou subsistema decodificador descrito neste documento.
[081] Em alguns exemplos, a antena 42 do sistema de codificação de vídeo 40 pode ser configurada para receber um fluxo de bits codificados de dados de vídeo. Tal como discutido, o fluxo de bits codificados pode incluir dados, indicadores, valores de índices, dados de seleção de modo ou similar associado com codificação de um quadro de vídeo tal como discutido neste documento, tais como dados associados com a partição de codificação (por exemplo, coeficientes de transformada ou coeficientes de transformada quantizados, indicadores opcionais (tal como discutido) e/ou dados definindo a partição de codificação). O sistema de codificação de vídeo 40 também pode incluir o decodificador de vídeo 30 acoplado à antena 42 e configurado para decodificar o fluxo de bits codificados. O dispositivo de exibição 45 é configurado para apresentar quadros de vídeo.
[082] Por conveniência de descrição, modalidades da revelação são descritas neste documento, por exemplo, por meio de referência para Codificação de Vídeo de Alta Eficiência (HEVC) ou para o software de referência de Codificação de Vídeo Versátil (VVC), o padrão de codificação de vídeo de próxima geração desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo (VCEG) ITU-T e do Grupo de Especialistas de Imagens em Movimento (MPEG) ISO/IEC. Uma pessoa de conhecimento comum na técnica entenderá que modalidades da revelação não estão limitadas a HEVC ou VVC. Codificador e Método de Codificação
[083] A figura 2 mostra um diagrama de blocos esquemático de um codificador de vídeo de exemplo 20 que é configurado para implementar as técnicas do presente pedido. No exemplo da figura 2, o codificador de vídeo 20 compreende uma entrada 201 (ou interface de entrada 201), uma unidade de cálculo de residual 204, uma unidade de processamento de transformada 206, uma unidade de quantização 208, uma unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212, uma unidade de reconstrução 214,
uma unidade de filtro de laço 220, um buffer (buffer) de imagens decodificadas (DPB) 230, uma unidade de seleção de modo 260, uma unidade de codificação de entropia 270 e uma saída 272 (ou interface de saída 272). A unidade de seleção de modo 260 pode incluir uma unidade de predição inter 244, uma unidade de predição intra 254 e uma unidade de partição
262. A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostradas). Um codificador de vídeo 20 tal como mostrado na figura 2 também pode ser referido como codificador de vídeo híbrido ou um codificador de vídeo de acordo com um codec de vídeo híbrido.
[084] A unidade de cálculo de residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208 e a unidade de seleção de modo 260 podem ser referidas como formando um caminho de sinal de avanço do codificador 20, enquanto que a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o buffer 216, o filtro de laço 220, o buffer de imagens decodificadas (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 podem ser referidos como formando um caminho de sinal para trás do codificador de vídeo 20, em que o caminho de sinal para trás do codificador de vídeo 20 corresponde ao caminho de sinal do decodificador (ver o decodificador de vídeo 30 na figura 3). A unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro de laço 220, o buffer de imagens decodificadas (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 também são referidos como formando o “decodificador incorporado” do codificador de vídeo 20. Imagens & Particionamento de Imagens (Imagens & Blocos)
[085] O codificador 20 pode ser configurado para receber, por exemplo, por meio da entrada 201, uma imagem 17 (ou os dados de imagem 17), por exemplo, imagem de uma sequência de imagens formando um vídeo ou sequência de vídeo. A imagem ou os dados de imagem recebidos também podem ser uma imagem pré-processada 19 (ou os dados de imagem pré- processados 19). Para o propósito de simplicidade a descrição a seguir se refere à imagem 17. A imagem 17 também pode ser referida como imagem atual ou imagem a ser codificada (em particular em codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, imagens codificadas e/ou decodificadas anteriormente da mesma sequência de vídeo, isto é, a sequência de vídeo que também compreende a imagem atual).
[086] Uma imagem (digital) é ou pode ser considerada como um conjunto ou matriz bidimensional de amostras com valores de intensidade. Uma amostra no conjunto também pode ser referida como pixel (forma abreviada de elemento de imagem) ou um pel. Os números de amostras nas direções (ou eixos) horizontal e vertical do conjunto ou imagem definem o tamanho e/ou resolução da imagem. Para representação de cor, tipicamente três componentes de cor são empregados, isto é, a imagem pode ser representada ou incluir três conjuntos de amostras. No formato ou espaço de cores RBG uma imagem compreende um conjunto correspondente de amostras de vermelho, verde e azul. Entretanto, em codificação de vídeo cada pixel tipicamente é representado em um formato ou espaço de cores de luminância e crominância, por exemplo, YCbCr, o qual compreende um componente de luminância indicado por Y (algumas vezes também L é usado em vez de Y) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou resumidamente luma) Y representa o brilho ou intensidade de nível de cinza (por exemplo, tal como em uma imagem de escala de cinza), enquanto que os dois componentes de crominância (ou resumidamente croma) Cb e Cr representam a cromaticidade ou componentes de informação de cor. Portanto, uma imagem no formato YCbCr compreende um conjunto de amostras de luminância de valores de amostras de luminância (Y), e dois conjuntos de amostras de crominância de valores de crominância (Cb e Cr). Imagens no formato RGB podem ser convertidas ou transformadas para o formato YCbCr e vice-versa, e o processo é também conhecido como transformação ou conversão de cores. Se uma imagem for monocromática, a imagem pode compreender somente um conjunto de amostras de luminância. Portanto, uma imagem pode ser, por exemplo, um conjunto de amostras de luma no formato monocromático ou um conjunto de amostras de luma e dois conjuntos correspondentes de amostras de croma no formato de cores 4:2:0, 4:2:2 e 4:4:4.
[087] Modalidades do codificador de vídeo 20 podem compreender uma unidade de partição de imagem (não representada na figura 2) configurada para particionar a imagem 17 em uma pluralidade de blocos de imagem (tipicamente não se sobrepondo) 203. Estes blocos também podem ser referidos como blocos de raiz, macroblocos (H.264/AVC) ou blocos de árvore de codificação (CTB) ou unidades de árvore de codificação (CTU) (H.265/HEVC e VVC). A unidade de partição de imagem pode ser configurada para usar o mesmo tamanho de bloco para todas as imagens de uma sequência de vídeo e a grade correspondente definindo o tamanho de bloco, ou para mudar o tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem em blocos correspondentes.
[088] Em modalidades adicionais, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, vários ou todos os blocos formando a imagem 17. O bloco de imagem 203 também pode ser referido como bloco de imagem atual ou bloco de imagem a ser codificado.
[089] Tal como a imagem 17, o bloco de imagem 203 de novo é ou pode ser considerado como um conjunto ou matriz bidimensional de amostras com valores de intensidade (valores de amostras), embora de dimensão menor que a da imagem 17. Em outras palavras, o bloco 203 pode compreender, por exemplo, um conjunto de amostras (por exemplo, um conjunto de luma no caso de uma imagem monocromática 17, ou um conjunto de luma ou croma no caso de uma imagem colorida) ou três conjuntos de amostras (por exemplo, um de luma e dois conjuntos de croma no caso de uma imagem colorida 17) ou qualquer outro número e/ou tipo de conjuntos dependendo do formato de cores aplicado. Os números de amostras nas direções (ou eixos) horizontal e vertical do bloco 203 definem o tamanho do bloco 203. Portanto, um bloco, por exemplo, pode ter um conjunto MxN (M colunas por N linhas) de amostras, ou um conjunto MxN de coeficientes de transformada.
[090] Modalidades do codificador de vídeo 20 tal como mostrado na figura 2 podem ser configuradas para codificar a imagem 17 bloco por bloco, por exemplo, a codificação e predição são realizadas por bloco 203. Cálculo de Residual
[091] A unidade de cálculo de residual 204 pode ser configurada para calcular um bloco residual 205 (também referido como o residual 205) com base no bloco de imagem 203 e em um bloco de predição 265 (detalhes adicionais a respeito do bloco de predição 265 são fornecidos posteriormente), por exemplo, subtraindo valores de amostras do bloco de predição 265 de valores de amostras do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio da amostra. Transformada
[092] A unidade de processamento de transformada 206 pode ser configurada para aplicar uma transformada, por exemplo, uma transformada discreta de cosseno (DCT) ou transformada discreta de seno (DST), nos valores de amostras do bloco residual 205 para obter os coeficientes de transformada 207 em um domínio da transformada. Os coeficientes de transformada 207 também podem ser referidos como coeficientes residuais de transformada e representam o bloco residual 205 no domínio da transformada.
[093] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações inteiras de DCT/DST, tais como as transformadas especificadas para H.265/HEVC. Comparadas a uma transformada DCT ortogonal, tais aproximações inteiras tipicamente são escaladas por um certo fator. A fim de preservar a norma do bloco residual que é processado por meio de transformadas diretas e inversas, fatores de escala adicionais são aplicados como parte do processo de transformada. Os fatores de escala tipicamente são escolhidos com base em certas restrições tais como fatores de escala sendo uma potência de dois para operações de deslocamento, profundidade de bits dos coeficientes de transformada, troca compensatória entre precisão e custos de implementação, etc. Fatores de escala específicos, por exemplo, são especificados para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212 (e a transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 312 no decodificador de vídeo 30) e fatores de escala correspondentes para a transformada direta, por exemplo, pela unidade de processamento de transformada 206, em um codificador 20 podem ser especificados de modo correspondente.
[094] Modalidades do codificador de vídeo 20 (correspondentemente da unidade de processamento de transformada 206) podem ser configuradas para produzir parâmetros de transformada, por exemplo, um tipo de transformada ou de transformadas, por exemplo, diretamente ou codificados ou comprimidos por meio da unidade de codificação de entropia 270, de maneira que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de transformada para decodificação. Quantização
[095] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformada 207 para obter os coeficientes quantizados 209, por exemplo, aplicando quantização escalar ou quantização de vetor. Os coeficientes quantizados 209 também podem ser referidos como os coeficientes de transformada quantizados 209 ou os coeficientes residuais quantizados 209.
[096] O processo de quantização pode reduzir a profundidade de bits associada com todos ou com alguns dos coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n bits pode ser arredondado para baixo para um coeficiente de transformada de m bits durante quantização, onde n é maior que m. O grau de quantização pode ser modificado ao ajustar um parâmetro de quantização (QP). Por exemplo, a para quantização escalar, o escalamento diferente pode ser aplicado para alcançar a quantização mais refinada ou mais grosseira. Os tamanhos de etapas de quantização menores correspondem à quantização mais refinada, enquanto que tamanhos de etapas de quantização maiores correspondem à quantização mais grosseira. O tamanho de etapa de quantização aplicável pode ser indicado por um parâmetro de quantização (QP). O parâmetro de quantização, por exemplo, pode ser um índice para um conjunto predefinido de tamanhos de etapas de quantização aplicáveis. Por exemplo, parâmetros de quantização pequenos podem corresponder à quantização refinada (tamanhos de etapas de quantização pequenos) e parâmetros de quantização grandes podem corresponder à quantização grosseira (tamanhos de etapas de quantização grandes) ou vice-versa. A quantização pode incluir divisão por um tamanho de etapa de quantização e uma desquantização correspondente e/ou a inversa, por exemplo, pela unidade de quantização inversa 210, e pode incluir multiplicação pelo tamanho de etapa de quantização.
Modalidades de acordo com alguns padrões, por exemplo, HEVC, podem ser configuradas para usar um parâmetro de quantização para determinar o tamanho de etapa de quantização. De uma maneira geral, o tamanho de etapa de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação incluindo divisão. Fatores de escala adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, a qual pode ter sido modificada por causa do escalamento usado na aproximação de ponto fixo da equação para tamanho de etapa de quantização e parâmetro de quantização. Em uma implementação de exemplo, o escalamento da transformada inversa e desquantização podem ser combinados. Alternativamente, tabelas de quantizações personalizadas podem ser usadas e sinalizadas de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perdas, em que a perda aumenta com tamanhos de etapas de quantização crescentes.
[097] As modalidades do codificador de vídeo 20 (correspondentemente da unidade de quantização 208) podem ser configuradas para enviar parâmetros de quantização (QP), por exemplo, diretamente ou codificados por meio da unidade de codificação de entropia 270, de maneira que, por exemplo, o decodificador de vídeo 30 pode receber e aplicar os parâmetros de quantização para decodificação. Quantização Inversa
[098] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da unidade de quantização 208 nos coeficientes quantizados para obter os coeficientes desquantizados 211, por exemplo, aplicando o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base ou usando o mesmo tamanho de etapa de quantização da unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como os coeficientes residuais desquantizados 211 e correspondem - embora tipicamente não idênticos aos coeficientes de transformada por causa da perda por quantização - aos coeficientes de transformada 207. Transformada Inversa
[099] A unidade de processamento de transformada inversa 212 é configurada para aplicar a transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada inversa discreta de cosseno (DCT) ou transformada inversa discreta de seno (DST) ou outras transformadas inversas, para obter um bloco residual reconstruído 213 (ou os coeficientes desquantizados correspondentes 213) no domínio da amostra. O bloco residual reconstruído 213 também pode ser referido como o bloco de transformada 213. Reconstrução
[0100] A unidade de reconstrução 214 (por exemplo, o adicionador ou somador 214) é configurada para adicionar o bloco de transformada 213 (isto é, o bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio da amostra, por exemplo, somando - amostra por amostra - os valores de amostras do bloco residual reconstruído 213 e os valores de amostras do bloco de predição 265. Filtragem
[0101] A unidade de filtro de laço 220 (ou resumidamente o “filtro de laço” 220) é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221, ou de uma maneira geral para filtrar amostras reconstruídas para obter amostras filtradas. A unidade de filtro de laço é, por exemplo, configurada para suavizar transições de pixels, ou melhorar de outro modo a qualidade de vídeo. A unidade de filtro de laço 220 pode compreender um ou mais filtros de laço tais como um filtro de desblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro de laço adaptativo (ALF), um filtro de nitidez, um filtro de suavização ou um filtro colaborativo ou qualquer combinação dos mesmos. Embora a unidade de filtro de laço 220 esteja mostrada na figura 2 como sendo um filtro em laço, em outras configurações a unidade de filtro de laço 220 pode ser implementada como um filtro pós-laço. O bloco filtrado 221 também pode ser referido como o bloco reconstruído filtrado 221. O buffer de imagens decodificadas 230 pode armazenar os blocos de codificação reconstruídos após a unidade de filtro de laço 220 realizar as operações de filtragem nos blocos de codificação reconstruídos.
[0102] As modalidades do codificador de vídeo 20 (correspondentemente da unidade de filtro de laço 220) podem ser configuradas para enviar parâmetros de filtro de laço (tal como informação de deslocamento adaptativo de amostra), por exemplo, diretamente ou codificados por meio da unidade de codificação de entropia 270, de maneira que, por exemplo, um decodificador 30 pode receber e aplicar os mesmos parâmetros de filtro de laço ou respectivos filtros de laço para decodificação. Buffer de Imagens Decodificadas
[0103] O buffer de imagens decodificadas (DPB) 230 pode ser uma memória que armazena imagens de referência, ou de uma maneira geral dados de imagem de referência, para codificar dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por meio de qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. O buffer de imagens decodificadas (DPB) 230 pode ser configurado para armazenar um ou mais blocos filtrados 221. O buffer de imagens decodificadas 230 pode ser configurado adicionalmente para armazenar outros blocos filtrados anteriormente, por exemplo, os blocos reconstruídos e filtrados anteriormente 221, da mesma imagem atual ou de imagens diferentes, por exemplo, imagens reconstruídas anteriormente, e pode fornecer imagens completas reconstruídas, isto é, decodificadas, anteriormente (e blocos e amostras de referência correspondentes) e/ou uma imagem atual reconstruída parcialmente (e blocos e amostras de referência correspondentes), por exemplo, para predição inter. O buffer de imagens decodificadas (DPB) 230 também pode ser configurado para armazenar um ou mais blocos reconstruídos não filtrados 215, ou de uma maneira geral amostras reconstruídas não filtradas, por exemplo, se o bloco reconstruído 215 não for filtrado pela unidade de filtro de laço 220, ou qualquer outra versão processada adicionalmente dos blocos ou amostras reconstruídos. Seleção de Modo (Particionamento & Predição)
[0104] A unidade de seleção de modo 260 compreende a unidade de partição 262, a unidade de predição inter 244 e a unidade de predição intra 254, e é configurada para receber ou obter dados de imagem original, por exemplo, um bloco original 203 (o bloco atual 203 da imagem atual 17), e dados de imagem reconstruída, por exemplo, amostras ou blocos reconstruídos filtrados e/ou não filtrados da mesma imagem (atual) e/ou de uma ou de uma pluralidade de imagens decodificadas anteriormente, por exemplo, do buffer de imagens decodificadas 230 ou de outros buffers (por exemplo, buffer de linha, não mostrado). Os dados de imagem reconstruída são usados como dados de imagem de referência para predição, por exemplo, predição inter ou predição intra, para obter um bloco de predição 265 ou o preditor 265.
[0105] A unidade de seleção de modo 260 pode ser configurada para determinar ou selecionar um particionamento para um modo de predição de bloco atual (incluindo sem particionamento) e um modo de predição (por exemplo, um modo de predição intra ou inter) e gerar um bloco de predição correspondente 265, o qual é usado para o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído
215.
[0106] Modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar o particionamento e o modo de predição (por exemplo, daqueles suportados ou disponíveis para a unidade de seleção de modo 260), os quais fornecem o melhor casamento ou em outras palavras o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento), ou uma sobrecarga de sinalização mínima (sobrecarga de sinalização mínima significa melhor compressão para transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo 260 pode ser configurada para determinar o particionamento e modo de predição com base em otimização de distorção de taxa (RDO), isto é, selecionar o modo de predição que fornece uma distorção de taxa mínima. Termos tais como “melhor”, “mínimo”, “ideal”, etc. neste contexto não se referem necessariamente a um “melhor”, “mínimo”, “ideal”, etc. total, mas também podem se referir ao cumprimento de um critério de terminação ou seleção tal como um valor excedendo ou estando abaixo de um limite ou outras restrições resultando potencialmente em uma “seleção subideal”, mas reduzindo complexidade e tempo de processamento.
[0107] Em outras palavras, a unidade de partição 262 pode ser configurada para particionar o bloco 203 em partições de bloco ou sub-blocos menores (os quais formam blocos novamente), por exemplo, iterativamente usando particionamento de árvore quaternária (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer combinação dos mesmos, e para realizar, por exemplo, a predição para cada uma das partições de bloco ou sub- blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e os modos de predição são aplicados para cada uma das partições de bloco ou sub-blocos.
[0108] No exposto a seguir o particionamento (por exemplo, pela unidade de partição 260) e o processamento de predição (pela unidade de predição inter 244 e pela unidade de predição intra 254) realizados por um codificador de vídeo de exemplo 20 serão explicados com mais detalhes. Particionamento
[0109] A unidade de partição 262 pode particionar (ou dividir) um bloco atual 203 em partições menores, por exemplo, blocos menores de tamanho quadrado ou retangular. Estes blocos menores (que também podem ser referidos como sub-blocos) podem ser particionados adicionalmente em partições ainda menores. Isto é também referido como particionamento de árvore ou particionamento de árvore hierárquico, em que um bloco de raiz, por exemplo, no nível de árvore de raiz 0 (nível de hierarquia 0, profundidade 0), pode ser particionado de modo repetitivo, por exemplo, particionado em dois ou mais blocos de um próximo nível de árvore inferior, por exemplo, nós no nível de árvore 1 (nível de hierarquia 1, profundidade 1), em que estes blocos podem ser particionados de novo em dois ou mais blocos de um próximo nível inferior, por exemplo, o nível de árvore 2 (nível de hierarquia 2, profundidade 2), etc. até que o particionamento seja terminado, por exemplo, porque um critério de terminação é cumprido, por exemplo, uma profundidade de árvore máxima ou tamanho de bloco mínimo é alcançado. Blocos que não são particionados adicionalmente são também referidos como blocos folhas ou nós folhas da árvore. Uma árvore usando particionamento para duas partições é referida como árvore binária (BT), uma árvore usando particionamento para três partições é referida como árvore ternária (TT), e uma árvore usando particionamento para quatro partições é referida como árvore quaternária (QT).
[0110] Tal como mencionado anteriormente, o termo “bloco” tal como usado neste documento pode ser uma parte, em particular uma parte quadrada ou retangular, de uma imagem. Com referência, por exemplo, para HEVC e VVC, o bloco pode ser ou corresponder a uma unidade de árvore de codificação (CTU), uma unidade de codificação (CU), unidade de predição (PU) e unidade de transformada (TU) e/ou aos blocos correspondentes, por exemplo, um bloco de árvore de codificação (CTB), um bloco de codificação (CB), um bloco de transformada (TB) ou bloco de predição (PB).
[0111] Por exemplo, uma unidade de árvore de codificação (CTU) pode ser ou compreender um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma de uma imagem que tem três conjuntos de amostras, ou um CTB de amostras de uma imagem monocromática ou de uma imagem que é codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco NxN de amostras para algum valor de N de tal maneira que a divisão de um componente em CTBs é um particionamento. Uma unidade de codificação (CU) pode ser ou compreender um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem três conjuntos de amostras, ou um bloco de codificação de amostras de uma imagem monocromática ou de uma imagem que é codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente um bloco de codificação (CB) pode ser um bloco MxN de amostras para alguns valores de M e N de tal maneira que a divisão de um CTB em blocos de codificação é um particionamento.
[0112] Em modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs ao usar uma estrutura de árvore quaternária denotada como árvore de codificação. A decisão se deve codificar uma área de imagem usando predição inter imagens (temporal) ou intra imagem (espacial) é tomada no nível de CU. Cada CU pode ser dividida adicionalmente em uma, duas ou quatro PUs de acordo com o tipo de divisão de PU. Dentro de uma PU, o mesmo processo de predição é aplicado e a informação relevante é transmitida para o decodificador em uma base de PU. Após obter o bloco residual aplicando o processo de predição com base no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformada (TUs) de acordo com outra estrutura de árvore quaternária similar à árvore de codificação para a CU.
[0113] Em modalidades, por exemplo, de acordo com o padrão de codificação de vídeo mais recente atualmente em desenvolvimento, o qual é referido como Codificação de Vídeo Versátil (VVC), particionamento de árvore quaternária e árvore binária (QTBT) é usado para particionar um bloco de codificação. Na estrutura de bloco de QTBT, uma CU pode ter uma forma quadrada ou retangular. Por exemplo, uma unidade de árvore de codificação (CTU) é primeiro particionada por uma estrutura de árvore quaternária. Os nós folhas de árvore quaternária são particionados adicionalmente por uma estrutura de árvore binária ou de árvore ternária (ou tripla). Os nós folhas de árvore de particionamento são chamados de unidades de codificação (CUs), e essa segmentação é usada para processamento de predição e transformada sem qualquer particionamento adicional. Isto significa que a CU, PU e a TU têm o mesmo tamanho de bloco na estrutura de bloco de codificação de QTBT. Em paralelo, partição múltipla, por exemplo, partição de árvore tripla, também foi proposta para ser usada juntamente com a estrutura de bloco de QTBT.
[0114] Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de partição descritas neste documento.
[0115] Tal como descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor ou um modo de predição ideal de um conjunto de modos de predição (predeterminados). O conjunto de modos de predição pode compreender, por exemplo, modos de predição intra e/ou modos de predição inter. Predição Intra
[0116] O conjunto de modos de predição intra pode compreender 35 modos de predição intra diferentes, por exemplo, modos não direcionais tais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, tais como definidos em HEVC, ou pode compreender 67 modos de predição intra diferentes, por exemplo, modos não direcionais tais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, tais como definidos para VVC.
[0117] A unidade de predição intra 254 é configurada para usar amostras reconstruídas de blocos vizinhos da mesma imagem atual para gerar um bloco de predição intra 265 de acordo com um modo de predição intra do conjunto de modos de predição intra.
[0118] A unidade de predição intra 254 (ou de uma maneira geral a unidade de seleção de modo 260) é configurada adicionalmente para enviar parâmetros de predição intra (ou de uma maneira geral informação indicativa do modo de predição intra selecionado para o bloco) para a unidade de codificação de entropia 270 na forma dos elementos de sintaxe 266 para inclusão nos dados de imagem codificados 21, de maneira que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de predição para decodificação. Predição Inter
[0119] O conjunto de modos (ou de possíveis modos) de predição inter depende das imagens de referência disponíveis (isto é, imagens anteriores decodificadas pelo menos parcialmente, por exemplo, armazenadas no DBP 230) e de outros parâmetros de predição inter, por exemplo, se a imagem de referência inteira ou somente uma parte, por exemplo, uma área de janela de pesquisa em volta da área do bloco atual, da imagem de referência é usada para procurar um bloco de referência de melhor casamento e/ou, por exemplo, se interpolação de pixel é aplicada, por exemplo, interpolação de metade/semipixel e/ou de quarto de pixel, ou não.
[0120] Adicional aos modos de predição indicados acima, modo de salto e/ou modo direto pode ser aplicado.
[0121] A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na figura 2). A unidade de estimativa de movimento pode ser configurada para receber ou obter o bloco de imagem 203 (o bloco de imagem atual 203 da imagem atual 17) e uma imagem decodificada 231, ou pelo menos um ou uma pluralidade de blocos reconstruídos anteriormente, por exemplo, blocos reconstruídos de uma ou de uma pluralidade de outras/diferentes imagens decodificadas anteriormente 231, para estimativa de movimento. Por exemplo, uma sequência de vídeo pode compreender a imagem atual e as imagens decodificadas anteriormente 231, ou em outras palavras a imagem atual e as imagens decodificadas anteriormente 231 podem ser parte ou formar uma sequência de imagens formando uma sequência de vídeo.
[0122] O codificador 20, por exemplo, pode ser configurado para selecionar um bloco de referência de uma pluralidade de blocos de referência de imagens iguais ou diferentes da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência) e/ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e a posição do bloco atual como parâmetros de predição inter para a unidade de estimativa de movimento. Este deslocamento é também chamado de vetor de movimento (MV).
[0123] A unidade de compensação de movimento é configurada para obter, por exemplo, receber, um parâmetro de predição inter e para realizar predição inter com base no parâmetro de predição inter ou usando o mesmo para obter um bloco de predição inter 265. Compensação de movimento, realizada pela unidade de compensação de movimento, pode envolver recuperar ou gerar o bloco de predição com base no vetor de movimento/bloco determinado por meio de estimativa de movimento, possivelmente realizando interpolações para precisão de subpixel. Filtragem de interpolação pode gerar amostras de pixels adicionais de amostras de pixels conhecidos, potencialmente aumentando assim o número de blocos de predição candidatos que podem ser usados para codificar um bloco de imagem. Ao receber o vetor de movimento para a PU do bloco de imagem atual, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagens de referência.
[0124] Unidade de compensação de movimento também pode gerar elementos de sintaxe associados com os blocos e a fatia de vídeo para uso pelo decodificador de vídeo 30 ao decodificar os blocos de imagem da fatia de vídeo. Codificação de Entropia
[0125] A unidade de codificação de entropia 270 é configurada para aplicar, por exemplo, um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema de VLC de contexto adaptativo (CAVLC), um esquema de codificação aritmética, uma binarização, uma codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), codificação de entropia de partição de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação de entropia) ou desvio (sem compressão) nos coeficientes quantizados 209, parâmetros de predição inter, parâmetros de predição intra, parâmetros de filtro de laço e/ou outros elementos de sintaxe para obter os dados de imagem codificados 21 que podem ser enviados por meio da saída 272, por exemplo, na forma de um fluxo de bits codificados 21, de maneira que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros para decodificação. O fluxo de bits codificados 21 pode ser transmitido para o decodificador de vídeo 30, ou armazenado em uma memória para transmissão ou recuperação posterior pelo decodificador de vídeo 30.
[0126] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador não baseado em transformada 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para certos blocos ou quadros. Em outra implementação, um codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade. Decodificador e Método de Decodificação
[0127] A figura 3 mostra um exemplo de um decodificador de vídeo 30 que é configurado para implementar as técnicas do presente pedido. O decodificador de vídeo 30 é configurado para receber os dados de imagem codificados 21 (por exemplo, o fluxo de bits codificados 21), por exemplo, codificados pelo codificador 20, para obter uma imagem decodificada 331. Os dados de imagem codificados, ou o fluxo de bits codificados, compreendem informação para decodificar os dados de imagem codificados, por exemplo, dados que representam blocos de imagem de uma fatia de vídeo codificada e elementos de sintaxe associados.
[0128] No exemplo da figura 3, o decodificador 30 compreende uma unidade de decodificação de entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformada inversa 312, uma unidade de reconstrução 314 (por exemplo, um somador 314), um filtro de laço 320, um buffer (buffer) de imagens decodificadas (DBP) 330, uma unidade de predição inter 344 e uma unidade de predição intra 354. A unidade de predição inter 344 pode ser ou incluir uma unidade de compensação de movimento. O decodificador de vídeo 30, em alguns exemplos, pode realizar uma passagem de decodificação de uma maneira geral recíproca à passagem de codificação descrita em relação ao codificador de vídeo 100 da figura 2.
[0129] Tal como explicado com relação ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro de laço 220, o buffer de imagens decodificadas (DPB) 230, a unidade de predição inter 344 e a unidade de predição intra 354 são também referidos como formando o “decodificador incorporado” do codificador de vídeo 20. Portanto, a unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 212, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, o filtro de laço 320 pode ser idêntico em função ao filtro de laço 220, e o buffer de imagens decodificadas 330 pode ser idêntico em função ao buffer de imagens decodificadas 230. Portanto, as explicações fornecidas para as respectivas unidades e funções do codificador de vídeo 20 se aplicam correspondentemente às respectivas unidades e funções do decodificador de vídeo 30.
Decodificação de Entropia
[0130] A unidade de decodificação de entropia 304 é configurada para analisar sintaticamente o fluxo de bits 21 (ou de uma maneira geral os dados de imagem codificados 21) e realizar, por exemplo, decodificação de entropia para os dados de imagem codificados 21 para obter, por exemplo, os coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrados na figura 3), por exemplo, alguns ou todos de parâmetros de predição inter (por exemplo, índice de imagem de referência e vetor de movimento), parâmetro de predição intra (por exemplo, modo ou índice de predição intra), parâmetros de transformada, parâmetros de quantização, parâmetros de filtro de laço e/ou outros elementos de sintaxe. A unidade de decodificação de entropia 304 pode ser configurada para aplicar os algoritmos ou esquemas de decodificação correspondendo aos esquemas de codificação tais como descritos com relação à unidade de codificação de entropia 270 do codificador 20. A unidade de decodificação de entropia 304 pode ser configurada adicionalmente para fornecer parâmetros de predição inter, parâmetro de predição intra e/ou outros elementos de sintaxe para a unidade de seleção de modo 360 e outros parâmetros para outras unidades do decodificador 30. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo. Quantização Inversa
[0131] A unidade de quantização inversa 310 pode ser configurada para receber parâmetros de quantização (QP) (ou de uma maneira geral informação relacionada com a quantização inversa) e coeficientes quantizados dos dados de imagem codificados 21 (por exemplo, ao analisar sintaticamente e/ou decodificar, por exemplo, pela unidade de decodificação de entropia 304) e para aplicar com base nos parâmetros de quantização uma quantização inversa nos coeficientes quantizados decodificados 309 para obter os coeficientes desquantizados 311, os quais também podem ser referidos como os coeficientes de transformada 311. O processo de quantização inversa pode incluir uso de um parâmetro de quantização determinado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, igualmente, um grau de quantização inversa que devem ser aplicados. Transformada Inversa
[0132] A unidade de processamento de transformada inversa 312 pode ser configurada para receber os coeficientes desquantizados 311, também referidos como os coeficientes de transformada 311, e para aplicar uma transformada aos coeficientes desquantizados 311 a fim de obter os blocos residuais reconstruídos 213 no domínio da amostra. Os blocos residuais reconstruídos 213 também podem ser referidos como os blocos de transformada 313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada inteira inversa ou um processo de transformada inversa similar conceitualmente. A unidade de processamento de transformada inversa 312 pode ser configurada adicionalmente para receber parâmetros de transformada ou informação correspondente dos dados de imagem codificados 21 (por exemplo, ao analisar sintaticamente e/ou decodificar, por exemplo, pela unidade de decodificação de entropia 304) para determinar a transformada a ser aplicada aos coeficientes desquantizados
311. Reconstrução
[0133] A unidade de reconstrução 314 (por exemplo, o adicionador ou somador 314) pode ser configurada para adicionar o bloco residual reconstruído 313 ao bloco de predição 365 para obter um bloco reconstruído 315 no domínio da amostra, por exemplo, somando os valores de amostras do bloco residual reconstruído 313 e os valores de amostras do bloco de predição 365. Filtragem
[0134] A unidade de filtro de laço 320 (no laço de codificação ou após o laço de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para suavizar transições de pixels, ou melhorar de outro modo a qualidade de vídeo. A unidade de filtro de laço 320 pode compreender um ou mais filtros de laço tais como um filtro de desblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro de laço adaptativo (ALF), um filtro de nitidez, um filtro de suavização ou um filtro colaborativo ou qualquer combinação dos mesmos. Embora a unidade de filtro de laço 320 esteja mostrada na figura 3 como sendo um filtro em laço, em outras configurações a unidade de filtro de laço 320 pode ser implementada como um filtro pós-laço. Buffer de Imagens Decodificadas
[0135] Os blocos de vídeo decodificados 321 de uma imagem são então armazenados no buffer de imagens decodificadas 330, o qual armazena as imagens decodificadas
331 como imagens de referência para subsequente compensação de movimento para outras imagens e/ou para envio correspondentemente para exibição.
[0136] O decodificador 30 é configurado para enviar a imagem decodificada 311, por exemplo, por meio da saída 312, para apresentação ou visualização para um usuário. Predição
[0137] A unidade de predição inter 344 pode ser idêntica à unidade de predição inter 244 (em particular à unidade de compensação de movimento) e a unidade de predição intra 354 pode ser idêntica à unidade de predição inter 254 em função, e toma decisões de divisão ou particionamento e predição com base nos parâmetros de particionamento e/ou de predição ou em respectiva informação recebida dos dados de imagem codificados 21 (por exemplo, ao analisar sintaticamente e/ou decodificar, por exemplo, pela unidade de decodificação de entropia 304). A unidade de seleção de modo 360 pode ser configurada para realizar a predição (predição intra ou inter) por bloco com base em imagens, blocos ou respectivas amostras reconstruídas (filtrados ou não filtrados) para obter o bloco de predição 365.
[0138] Quando a fatia de vídeo é codificada como uma fatia codificada de modo intra (I), a unidade de predição intra 354 da unidade de seleção de modo 360 é configurada para gerar o bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de predição intra sinalizado e em dados de blocos decodificados anteriormente da imagem atual. Quando a imagem de vídeo é codificada como uma fatia codificada de modo inter (isto é, B ou P), a unidade de predição inter 344 (por exemplo, a unidade de compensação de movimento) da unidade de seleção de modo 360 é configurada para produzir os blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e em outros elementos de sintaxe recebidos da unidade de decodificação de entropia 304. Para predição inter, os blocos de predição podem ser produzidos de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadros de referência, Lista 0 e Lista 1, usando técnicas de construção padrões com base em imagens de referência armazenadas no DPB 330.
[0139] A unidade de seleção de modo 360 é configurada para determinar a informação de predição para um bloco de vídeo da fatia de vídeo atual ao analisar sintaticamente os vetores de movimento e outros elementos de sintaxe, e usa a informação de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de seleção de modo 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de predição inter (por exemplo, fatia B, fatia P ou fatia GPB), informação de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado de modo inter da fatia, status de predição inter para cada bloco de vídeo codificado de modo inter da fatia e outra informação para decodificar os blocos de vídeo na fatia de vídeo atual.
[0140] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificados 21. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo de saída sem a unidade de filtragem de laço
320. Por exemplo, um decodificador não baseado em transformada 30 pode quantizar de modo inverso o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para certos blocos ou quadros. Em outra implementação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 combinadas em uma única unidade.
[0141] A figura 4 é um diagrama esquemático de um dispositivo de codificação de vídeo 400 de acordo com uma modalidade da revelação. O dispositivo de codificação de vídeo 400 é adequado para implementar as modalidades reveladas tais como descritas neste documento. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador tal como o decodificador de vídeo 30 da figura 1A ou um codificador tal como o codificador de vídeo 20 da figura 1A.
[0142] O dispositivo de codificação de vídeo 400 compreende as portas de admissão 410 (ou as portas de entrada 410) e as unidades receptoras (Rx) 420 para receber dados; um processador, unidade lógica ou unidade central de processamento (CPU) 430 para processar os dados; as unidades transmissoras (Tx) 440 e as portas de egressão 450 (ou as portas de saída 450) para transmitir os dados; e uma memória 460 para armazenar os dados. O dispositivo de codificação de vídeo 400 também pode compreender componentes óticos para elétricos (OE) e componentes elétricos para óticos (EO) acoplados às portas de entrada 410, às unidades receptoras
420, às unidades transmissoras 440 e às portas de saída 450 para saída ou entrada de sinais óticos ou elétricos.
[0143] O processador 430 é implementado por meio de hardware e software. O processador 430 pode ser implementado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de múltiplos núcleos), FPGAs, ASICs e DSPs. O processador 430 está em comunicação com as portas de entrada 410, as unidades receptoras 420, as unidades transmissoras 440, as portas de saída 450 e a memória 460. O processador 430 compreende um módulo de codificação 470. O módulo de codificação 470 implementa as modalidades reveladas descritas acima. Por exemplo, o módulo de codificação 470 implementa, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470, portanto, fornece um melhoramento substancial para a funcionalidade do dispositivo de codificação de vídeo 400 e efetua uma transformação do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação 470 é implementado como instruções armazenadas na memória 460 e executadas pelo processador
430.
[0144] A memória 460 pode compreender um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados de sobrecarga, para armazenar programas quando tais programas são selecionados para execução e para armazenar instruções e dados que são lidos durante execução de programa. A memória 460 pode ser, por exemplo, volátil e/ou não volátil e pode ser uma memória somente de leitura (ROM), memória de acesso aleatório (RAM), memória endereçável de conteúdo ternário (TCAM) e/ou memória estática de acesso aleatório (SRAM).
[0145] A figura 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como um ou outro ou ambos de o dispositivo de origem 12 e o dispositivo de destino 14 da figura 1A de acordo com uma modalidade exemplar. O aparelho 500 pode implementar técnicas do presente pedido descritas acima. O aparelho 500 pode ser na forma de um sistema de computação incluindo múltiplos dispositivos de computação, ou na forma de um único dispositivo de computação, por exemplo, um telefone móvel, um tablet, um laptop, um notebook, um computador de mesa e outros mais.
[0146] Um processador 502 no aparelho 500 pode ser uma unidade central de processamento. Alternativamente, o processador 502 pode ser qualquer outro tipo de dispositivo, ou de múltiplos dispositivos, capaz de manipular ou processar informação existindo agora ou desenvolvida futuramente. Embora as implementações reveladas possam ser praticadas com um único processador tal como mostrado, por exemplo, o processador 502, vantagens em velocidade e eficiência podem ser alcançadas usando mais de um processador.
[0147] Uma memória 504 no aparelho 500 pode ser um dispositivo de memória somente de leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implementação. Qualquer outro tipo adequado de dispositivo de armazenamento pode ser usado como a memória 504. A memória 504 pode incluir os códigos e dados 506 que são acessados pelo processador 502 usando um barramento 512. A memória 504 pode incluir adicionalmente um sistema operacional 508 e os programas de aplicação 510, os programas de aplicação 510 incluindo pelo menos um programa que permite ao processador 502 realizar os métodos descritos aqui. Por exemplo, os programas de aplicação 510 podem incluir as aplicações 1 a N, as quais incluem adicionalmente uma aplicação de codificação de vídeo que realiza os métodos descritos aqui. O aparelho 500 também pode incluir memória adicional na forma de um armazenamento secundário 514, o qual, por exemplo, pode ser um cartão de memória usado com um dispositivo de computação móvel. Porque as sessões de comunicação de vídeo podem conter uma quantidade significativa de informação, elas podem ser armazenadas totalmente ou em parte no armazenamento secundário 514 e carregadas na memória 504 tal como necessário para processamento.
[0148] O aparelho 500 também pode incluir um ou mais dispositivos de saída tais como uma tela 518. A tela 518 pode ser, em um exemplo, uma tela sensível ao toque que combina uma tela com um elemento sensível ao toque que é operável para detectar entradas de toque. A tela 518 pode ser acoplada ao processador 502 por meio do barramento 512. Outros dispositivos de saída que permitem a um usuário programar ou usar de outro modo o aparelho 500 podem ser fornecidos além da tela 518 ou como uma alternativa para ela. Quando o dispositivo de saída é ou inclui uma tela, a tela pode ser implementada em vários modos, incluindo uma tela de cristal líquido (LCD), uma tela de tubo de raios catódicos (CRT), uma tela de plasma ou tela de diodo emissor de luz (LED), tal como uma tela de LED orgânico (OLED).
[0149] O aparelho 500 também pode incluir ou ficar em comunicação com um dispositivo de detecção de imagem 520,
por exemplo, uma câmera, ou qualquer outro dispositivo de detecção de imagem 520 existindo agora ou desenvolvido futuramente que possa detectar uma imagem tal como a imagem de um usuário operando o aparelho 500. O dispositivo de detecção de imagem 520 pode ser posicionado de tal maneira que ele fica direcionado para o usuário operando o aparelho
500. Em um exemplo, a posição e o eixo ótico do dispositivo de detecção de imagem 520 podem ser configurados de tal maneira que o campo de visão inclui uma área que fica imediatamente adjacente à tela 518 e a partir da qual a tela 518 é visível.
[0150] O aparelho 500 também pode incluir ou ficar em comunicação com um dispositivo de detecção de som 522, por exemplo, um microfone, ou qualquer outro dispositivo de detecção de som existindo agora ou desenvolvido futuramente que possa detectar sons perto do aparelho 500. O dispositivo de detecção de som 522 pode ser posicionado de tal maneira que ele fica direcionado para o usuário operando o aparelho 500 e pode ser configurado para receber sons, por exemplo, fala ou outras declarações, emitidos pelo usuário enquanto o usuário opera o aparelho 500.
[0151] Embora a figura 5 represente o processador 502 e a memória 504 do aparelho 500 como estando integrados em uma única unidade, outras configurações podem ser utilizadas. As operações do processador 502 podem ser distribuídas através de múltiplas máquinas (cada máquina tendo um ou mais de processadores) que podem ser acopladas diretamente ou por meio de uma rede de área local ou de outra rede. A memória 504 pode ser distribuída através de múltiplas máquinas tal como uma memória baseada em rede ou memória em múltiplas máquinas realizando as operações do aparelho 500. Embora representado aqui como um único barramento, o barramento 512 do aparelho 500 pode ser composto de múltiplos barramentos. Adicionalmente, o armazenamento secundário 514 pode ser acoplado diretamente aos outros componentes do aparelho 500 ou pode ser acessado por meio de uma rede e pode compreender uma única unidade integrada tal como um cartão de memória ou múltiplas unidades tais como múltiplos cartões de memória. O aparelho 500 pode ser assim implementado em uma grande variedade de configurações. Combinação de Predição Dependente de Posição (PDPC)
[0152] Em desenvolvimento recente de codificação de vídeo, técnicas e esquemas mais sofisticados para predição têm surgido.
[0153] Uma dessas técnicas é combinação de predição dependente de posição (PDPC). A PDPC é um esquema que foi imaginado para abordar certas questões e melhorar predição intra. No esquema de PDPC, um codificador de imagem ou de vídeo determina um valor de uma amostra predita com base em amostras de referência filtradas, amostras de referência não filtradas e na posição da amostra predita dentro de um bloco atual. Uso do esquema de PDPC pode ser associado com ganhos de eficiência de codificação. Por exemplo, a mesma quantidade de dados de vídeo pode ser codificada usando menos bits.
[0154] Esquemas de codificação de vídeo tais como H.264/AVC e HEVC são projetados com base no princípio bem- sucedido de codificação de vídeo híbrida baseada em blocos. Usando este princípio uma imagem é primeiro particionada em blocos e então cada bloco é predito ao usar predição intra imagem ou inter imagens.
[0155] Vários padrões de codificação de vídeo desde o H.261 pertencem ao grupo de “codecs de vídeo híbridos com perda” (isto é, combinam predição espacial e temporal no domínio da amostra e codificação de transformada 2D para aplicar quantização no domínio da transformada). Cada imagem de uma sequência de vídeo tipicamente é particionada em um conjunto de blocos não se sobrepondo e a codificação tipicamente é realizada em um nível de bloco. Em outras palavras, no codificador o vídeo tipicamente é processado, isto é, codificado, em um nível de bloco (bloco de imagem), por exemplo, ao usar predição espacial (intra imagem) e predição temporal (inter imagens) para gerar um bloco de predição, subtrair o bloco de predição do bloco atual (bloco processado atualmente/a ser processado) para obter um bloco residual, transformar o bloco residual e quantizar o bloco residual no domínio da transformada para reduzir a quantidade de dados a ser transmitidos (compressão), enquanto que no decodificador o processamento inverso comparado ao do codificador é aplicado parcialmente ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica o laço de processamento de decodificador de tal maneira que ambos gerarão idênticas predições (por exemplo, predições intra e inter) e/ou reconstruções para processar, isto é, codificar, os blocos subsequentes.
[0156] Tal como usado neste documento, o termo “bloco” pode se uma parte de uma imagem ou um quadro. Por conveniência de descrição, modalidades da revelação são descritas neste documento com referência para Codificação de Vídeo de Alta Eficiência (HEVC) ou para o software de referência de Codificação de Vídeo Versátil (VVC), desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo (VCEG) ITU-T e do Grupo de Especialistas de Imagens em Movimento (MPEG) ISO/IEC.
Uma pessoa de conhecimento comum na técnica entenderá que modalidades da revelação não estão limitadas a HEVC ou VVC.
Ela pode se referir a uma CU, PU e TU.
Em HEVC, uma CTU é dividida em CUs ao usar uma estrutura de árvore quaternária denotada como árvore de codificação.
A decisão se deve codificar uma área de imagem usando predição inter imagens (temporal) ou intra imagem (espacial) é tomada no nível de CU.
Cada CU pode ser dividida adicionalmente em uma, duas ou quatro PUs de acordo com o tipo de divisão de PU.
Dentro de uma PU, o mesmo processo de predição é aplicado e a informação relevante é transmitida para o decodificador em uma base de PU.
Após obter o bloco residual aplicando o processo de predição com base no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformada (TUs) de acordo com outra estrutura de árvore quaternária similar à árvore de codificação para a CU.
No desenvolvimento mais novo da técnica de compressão de vídeo, particionamento de árvore quaternária e árvore binária (QTBT) é usado para particionar um bloco de codificação.
Na estrutura de bloco de QTBT, uma CU pode ter uma forma quadrada ou retangular.
Por exemplo, uma unidade de árvore de codificação (CTU) é primeiro particionada por uma estrutura de árvore quaternária.
Os nós folhas de árvore quaternária são particionados adicionalmente por uma estrutura de árvore binária.
Os nós folhas de árvore binária são chamados de unidades de codificação (CUs), e essa segmentação é usada para processamento de predição e transformada sem qualquer particionamento adicional. Isto significa que a CU, PU e a TU têm o mesmo tamanho de bloco na estrutura de bloco de codificação de QTBT. Em paralelo, partição múltipla, por exemplo, partição de árvore tripla, também foi proposta para ser usada juntamente com a estrutura de bloco de QTBT.
[0157] ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) estão estudando a potencial necessidade de padronização de tecnologia de codificação de vídeo futura com uma capacidade de compressão que excede significativamente aquela do padrão HEVC atual (incluindo suas extensões atuais e extensões de curto prazo para codificação de conteúdo de tela e codificação de alta faixa dinâmica). Os grupos estão trabalhando conjuntamente nesta atividade de exploração em um esforço de colaboração conjunta conhecido como a Equipe Conjunta de Exploração de Vídeo (JVET) para avaliar projetos de tecnologia de compressão propostos por seus especialistas nesta área.
[0158] Em um exemplo, para predição intra direcional, modos de predição intra estão disponíveis representando diferentes ângulos de predição de diagonal para cima a diagonal para baixo. Para definição dos ângulos de predição, um valor de deslocamento pang em uma grade de 32 amostras é definido. A associação de pang ao modo de predição intra correspondente está mostrada na figura 6 para os modos de predição vertical. Para os modos de predição horizontal o esquema é girado para a direção vertical e os valores de pang são designados de modo correspondente. Tal como exposto anteriormente, modos de predição angular estão disponíveis para todos os tamanhos aplicáveis de blocos de predição intra. Eles podem usar a mesma grade de 32 amostras para a definição dos ângulos de predição. A distribuição dos valores de pang na grade de 32 amostras na figura 6 revela uma resolução aumentada dos ângulos de predição junto à direção vertical e uma resolução mais grosseira dos ângulos de predição para as direções diagonais. O mesmo se aplica para as direções horizontais. Este projeto se origina da observação de que, em lotes de conteúdo de vídeo, estruturas aproximadamente horizontal e vertical reproduzem uma função importante quando comparada às estruturas diagonais.
[0159] Em um exemplo, embora para as direções de predição horizontal e vertical a seleção de amostras a ser usadas para predição seja direta, esta tarefa exige mais esforço no caso de predição angular. Para os modos 11-25, ao predizer o bloco atual Bc do conjunto de amostras de predição pref (também conhecido como lado de referência principal) em uma direção angular, amostras de ambas de a parte vertical e a horizontal de pref podem ser envolvidas. Uma vez que a determinação da localização da respectiva amostra em uma e outra das derivações de pref exige algum esforço computacional, uma referência de predição unidimensional unificada tem sido projetada para predição intra de HEVC. O esquema está mostrado na figura 7. Antes de realizar a operação de predição real, o conjunto de amostras de referência pref é mapeado para um vetor unidimensional p1,ref. A projeção que é usada para o mapeamento depende da direção indicada pelo ângulo de predição intra do respectivo modo de predição intra. Somente amostras de referência da parte de pref que deve ser usada para predição são mapeadas para p1,ref.
O mapeamento real das amostras de referência para p1,ref para cada modo de predição angular está representado nas figuras 8 e 9 para direções de predição angular horizontal e vertical, respectivamente. O conjunto de amostras de referência p1,ref é construído uma vez para o bloco predito. A predição é então derivada de duas amostras de referência vizinhas no conjunto tal como detalhado a seguir. Tal como pode ser visto nas figuras 8 e 9 o conjunto de amostras de referência unidimensional não é preenchido completamente para todos os modos de predição intra. Somente as localizações que estão na faixa de projeção para a direção de predição intra correspondente são incluídas no conjunto.
[0160] A predição para ambos os modos de predição horizontal e vertical é realizada no mesmo modo somente ao trocar as coordenadas x e y do bloco. A predição a partir de p1,ref é realizada em precisão de 1/32 de pixel. Dependendo do valor do parâmetro de ângulo pang, um deslocamento de amostra iidx em p1,ref e um fator de ponderação ifact para uma amostra na posição (x, y) são determinados. Aqui, a derivação para os modos verticais é fornecida. A derivação para os modos horizontais se segue de modo correspondente, trocando x e y. 𝑝𝑎𝑛𝑔 𝑖𝑖𝑑𝑥 = (𝑦 + 1) ∙ , 𝑖𝑓𝑎𝑐𝑡 = [(𝑦 + 1) ∙ 𝑝𝑎𝑛𝑔 ] 𝑚𝑜𝑑32 32
[0161] Se ifact não for igual a 0, isto é, a predição não cair exatamente em uma localização de amostra completa em p1,ref, uma ponderação linear entre as duas localizações de amostras vizinhas em p1,ref é realizada como 32 − 𝑖𝑓𝑎𝑐𝑡 𝑖𝑓𝑎𝑐𝑡 𝐵𝑐(𝑥, 𝑦) = ∙ 𝑝1,𝑟𝑒𝑓 (𝑥 + 𝑖𝑖𝑑𝑥 + 1) + ∙ 𝑝1,𝑟𝑒𝑓 (𝑥 + 𝑖𝑖𝑑𝑥 + 2), 32 32 com 0 ≤ x, y < Nc. Deve ser notado que os valores de iidx e ifact dependem somente de y, e por esta razão somente precisam ser calculados uma vez por linha (para modos de predição vertical).
[0162] O VTM-1.0 (Modelo de Teste Versátil) usa 35 modos intra enquanto que o BMS (Conjunto de Referência) usa 67 modos intra. A predição intra é um mecanismo usado em muitas estruturas de codificação de vídeo para aumentar eficiência de compressão nos casos onde somente um dado quadro pode ser envolvido.
[0163] A figura 10A mostra um exemplo de 67 modos de predição intra, por exemplo, tais como propostos para VVC, a pluralidade de modos de predição intra de 67 modos de predição intra compreendendo: modo planar (índice 0), modo dc (índice 1) e modos angulares com os índices 2 a 66, em que o modo angular esquerdo inferior na figura 10A se refere ao índice 2 e a numeração dos índices sendo incrementada até o índice 66 sendo o modo angular superior mais à direita da figura 10A.
[0164] Tal como mostrado na figura 10A, a versão mais recente de JEM tem alguns modos correspondendo a direções de predição intra inclinadas. Para qualquer um destes modos, predizer amostras dentro de uma interpolação de bloco de um conjunto de amostras de referência vizinhas deve ser realizado, se uma posição correspondente dentro de um lado de bloco for fracionária. HEVC e VVC usam interpolação linear entre duas amostras de referência adjacentes. JEM usa filtros de interpolação de 4 derivações mais sofisticados. Coeficientes de filtro são selecionados para serem coeficientes gaussianos ou cúbicos dependendo da largura ou do valor de altura. A decisão sobre se deve usar largura ou altura é harmonizada com a decisão sobre seleção de lado de referência principal: quando modo de predição intra é igual ou maior que o modo diagonal, lado superior de amostras de referência é selecionado para ser o lado de referência principal e valor de largura é selecionado para determinar filtro de interpolação em uso. De outro modo, referência de lado principal é selecionada do lado esquerdo do bloco e altura controla o processo de seleção de filtro. Especificamente, se comprimento de lado selecionado for igual ou menor que 8 amostras, interpolação cúbica de 4 derivações é aplicada. De outro modo, filtro de interpolação é um filtro gaussiano de 4 derivações.
[0165] Coeficientes de filtros específicos usados em JEM são dados na Tabela 1. Amostra predita é calculada por meio de convolução com coeficientes selecionados da Tabela 1 de acordo com deslocamento de subpixel e tipo de filtro como a seguir: 𝑖<4 𝑠(𝑥) = (∑(ref𝑖+𝑥 ∙ 𝑐𝑖 ) + 128) ≫ 8 𝑖=0
[0166] Nesta equação, “>>” indica uma operação de deslocamento para a direita bit a bit.
[0167] Se o filtro cúbico for selecionado, a amostra predita é recortada adicionalmente para a faixa permitida de valores, a qual é definida em conjunto de parâmetros de sequência (SPS) ou derivada da profundidade de bits do componente selecionado.
[0168] Um SPS pode especificar recursos e ferramentas ativadas usadas em uma sequência de vídeo codificada. Em contraste com o conjunto de parâmetros de vídeo (VPS), o qual diz respeito ao fluxo de bits inteiro, a informação de SPS se aplica somente a uma camada especificada por um identificador de camada.
Por exemplo, recursos especificados no SPS incluem o formato de cores e profundidade de bits assim como a resolução de amostra de imagens codificadas.
Tabela 1: Filtros de interpolação de predição intra usados em JEM Deslocamento de Filtro cúbico Filtro de Gauss subpixel c0 c1 c2 c3 c0 c1 c2 c3 0 (inteiro) 0 256 0 0 47 161 47 1 1 -3 252 8 -1 43 161 51 1 2 -5 247 17 -3 40 160 54 2 3 -7 242 25 -4 37 159 58 2 4 -9 236 34 -5 34 158 62 2 5 -10 230 43 -7 31 156 67 2 6 -12 224 52 -8 28 154 71 3 7 -13 217 61 -9 26 151 76 3 8 -14 210 70 -10 23 149 80 4 9 -15 203 79 -11 21 146 85 4 10 -16 195 89 -12 19 142 90 5 11 -16 187 98 -13 17 139 94 6 12 -16 179 107 -14 16 135 99 6 13 -16 170 116 -14 14 131 104 7 14 -17 162 126 -15 13 127 108 8 15 -16 153 135 -16 11 123 113 9 16 (meio pixel) -16 144 144 -16 10 118 118 10 17 -16 135 153 -16 9 113 123 11 18 -15 126 162 -17 8 108 127 13 19 -14 116 170 -16 7 104 131 14 20 -14 107 179 -16 6 99 135 16
21 -13 98 187 -16 6 94 139 17 22 -12 89 195 -16 5 90 142 19 23 -11 79 203 -15 4 85 146 21 24 -10 70 210 -14 4 80 149 23 25 -9 61 217 -13 3 76 151 26 26 -8 52 224 -12 3 71 154 28 27 -7 43 230 -10 2 67 156 31 28 -5 34 236 -9 2 62 158 34 29 -4 25 242 -7 2 58 159 37 30 -3 17 247 -5 2 54 160 40 31 -1 8 252 -3 1 51 161 43
[0169] Outro conjunto de filtros de interpolação que têm precisão de 6 bits é apresentado na Tabela 2. Tabela 2: Um conjunto de filtros de interpolação com precisão de 6 bits Deslocamento de Filtro intra/inter Filtro subpixel unificado gaussiano c0 c1 c2 c3 c0 c1 c2 c3 0 (inteiro) 0 64 0 0 16 32 16 0 1 -1 63 2 0 15 29 17 3 2 -2 62 4 0 14 29 18 3 3 -2 60 7 -1 14 29 18 3 4 -2 58 10 -2 14 28 18 4 5 -3 57 12 -2 13 28 19 4 6 -4 56 14 -2 12 28 20 4 7 -4 55 15 -2 12 27 20 5 8 -4 54 16 -2 11 27 21 5 9 -5 53 18 -2 11 27 21 5 10 -6 52 20 -2 10 26 22 6
11 -6 49 24 -3 10 26 22 6 12 -6 46 28 -4 9 26 23 6 13 -5 44 29 -4 9 26 23 6 14 -4 42 30 -4 8 25 24 7 15 -4 39 33 -4 8 25 24 7 16 (meio pixel) -4 36 36 -4 7 25 25 7 17 -4 33 39 -4 7 24 25 8 18 -4 30 42 -4 7 24 25 8 19 -4 29 44 -5 6 23 26 9 20 -4 28 46 -6 6 23 26 9 21 -3 24 49 -6 6 22 26 10 22 -2 20 52 -6 6 22 26 10 23 -2 18 53 -5 5 21 27 11 24 -2 16 54 -4 5 21 27 11 25 -2 15 55 -4 5 20 27 12 26 -2 14 56 -4 4 20 28 12 27 -2 12 57 -3 4 19 28 13 28 -2 10 58 -2 4 18 28 14 29 -1 7 60 -2 3 18 29 14 30 0 4 62 -2 3 18 29 14 31 0 2 63 -1 3 17 29 15
[0170] Uma amostra predita de modo intra é calculada por meio de convolução com coeficientes selecionados da Tabela 2 de acordo com o deslocamento de subpixel e o tipo de filtro como a seguir: 𝑖<4 𝑠(𝑥) = (∑(ref𝑖+𝑥 ∙ 𝑐𝑖 ) + 32) ≫ 6 𝑖=0
[0171] Nesta equação, “>>” indica uma operação de deslocamento para a direita bit a bit.
[0172] Outro conjunto de filtros de interpolação que têm precisão e 6 bits é apresentado na Tabela 3. Tabela 3: Um conjunto de filtros de interpolação com precisão de 6 bits Deslocamento Filtro DCT-IF de croma Filtro gaussiano de subpixel c0 c1 c2 c3 c0 c1 c2 c3 0 (inteiro) 0 64 0 0 16 32 16 0 1 -1 63 2 0 15 29 17 3 2 -2 62 4 0 15 29 17 3 3 -2 60 7 -1 14 29 18 3 4 -2 58 10 -2 13 29 18 4 5 -3 57 12 -2 13 28 19 4 6 -4 56 14 -2 13 28 19 4 7 -4 55 15 -2 12 28 20 4 8 -4 54 16 -2 11 28 20 5 9 -5 53 18 -2 11 27 21 5 10 -6 52 20 -2 10 27 22 5 11 -6 49 24 -3 9 27 22 6 12 -6 46 28 -4 9 26 23 6 13 -5 44 29 -4 9 26 23 6 14 -4 42 30 -4 8 25 24 7 15 -4 39 33 -4 8 25 24 7 16 (meio -4 36 36 -4 8 24 24 8 pixel) 17 -4 33 39 -4 7 24 25 8 18 -4 30 42 -4 7 24 25 8 19 -4 29 44 -5 6 23 26 9 20 -4 28 46 -6 6 23 26 9 21 -3 24 49 -6 6 22 27 9
22 -2 20 52 -6 5 22 27 10 23 -2 18 53 -5 5 21 27 11 24 -2 16 54 -4 5 20 28 11 25 -2 15 55 -4 4 20 28 12 26 -2 14 56 -4 4 19 28 13 27 -2 12 57 -3 4 19 28 13 28 -2 10 58 -2 4 18 29 13 29 -1 7 60 -2 3 18 29 14 30 0 4 62 -2 3 17 29 15 31 0 2 63 -1 3 17 29 15
[0173] A figura 11 ilustra um diagrama esquemático de uma pluralidade de modos de predição intra usados no esquema UIP de HEVC. Para blocos de luminância, os modos de predição intra podem compreender até 36 modos de predição intra, os quais podem incluir três modos não direcionais e 33 modos direcionais. Os modos não direcionais podem compreender um modo de predição planar, um modo de predição médio (DC) e um modo de predição de croma a partir de luma (LM). O modo de predição planar pode realizar predições assumindo uma superfície de amplitude de bloco com uma inclinação horizontal e vertical derivada do limite do bloco. O modo de predição DC pode realizar predições assumindo uma superfície de bloco plana com um valor casando com o valor médio do limite de bloco. O modo de predição LM pode realizar predições assumindo um valor de croma para o bloco que casa com o valor de luminância para o bloco. Os modos direcionais podem realizar predições com base em blocos adjacentes tais como mostrados na figura 11.
[0174] H.264/AVC e HEVC especificam que um filtro passa-baixa pode ser aplicado para ter como referência amostras anteriores sendo usadas em processo de predição intra. Uma decisão sobre se deve usar ou não o filtro de amostra de referência é determinada por meio de modo de predição intra e tamanho de bloco. Este mecanismo pode ser referido como Suavização Intra Dependente de Modo (MDIS). Além disso existe uma pluralidade de métodos relacionados com MDIS. Por exemplo, o método de Suavização de Amostra de Referência Adaptativa (ARSS) pode sinalizar explicitamente (isto é, uma sinalização é incluída em um fluxo de bits) ou implicitamente (por exemplo, ocultação de dados é usada para evitar colocar uma sinalização em um fluxo de bits para reduzir sobrecarga de sinalização) se as amostras de predição forem filtradas. Neste caso, o codificador pode tomar a decisão a respeito de suavização ao testar o custo de Distorção de Taxa (RD) para todos os potenciais modos de predição intra.
[0175] A figura 10A mostra um exemplo de 67 modos de predição intra, por exemplo, tais como propostos para VVC, a pluralidade de modos de predição intra de 67 modos de predição intra compreendendo: modo planar (índice 0), modo dc (índice 1) e modos angulares com os índices 2 a 66, em que o modo angular esquerdo inferior na figura 10A se refere ao índice 2 e a numeração dos índices sendo incrementada até o índice 66 sendo o modo angular superior mais à direita da figura 10A.
[0176] Tal como mostrado na figura 10B e na figura 10C, partindo da segunda versão VVC tem alguns modos correspondendo às direções de predição intra inclinadas para o lado, incluindo ângulos maiores (mostrados como linhas tracejadas). Para qualquer um destes modos, para predizer amostras dentro de um bloco, interpolação de um conjunto de amostras de referência vizinhas deve ser realizada, se uma posição correspondente dentro de um lado de bloco for fracionária. HEVC e VVC usam interpolação linear entre duas amostras de referência adjacentes. JEM usa filtros de interpolação de 4 derivações mais sofisticados. Coeficientes de filtro são selecionados para serem coeficientes gaussianos ou cúbicos dependendo da largura ou do valor de altura. A decisão sobre se deve usar largura ou altura é harmonizada com a decisão sobre seleção de lado de referência principal: quando o modo de predição intra é igual ou maior que o modo diagonal, o lado superior de amostras de referência é selecionado para ser o lado de referência principal e o valor de largura é selecionado para determinar o filtro de interpolação em uso. De outro modo, a referência de lado principal é selecionada do lado esquerdo do bloco e a altura controla o processo de seleção de filtro. Especificamente, se o comprimento de lado selecionado for igual ou menor que 8 amostras, interpolação cúbica 4 derivações é aplicada. De outro modo, o filtro de interpolação é um filtro gaussiano de 4 derivações.
[0177] Em VVC, um mecanismo de particionamento baseado em ambas de árvore quaternária e árvore binária e conhecido como QTBT é usado. Tal como representado na figura 12, particionamento de QTBT pode fornecer não somente blocos quadrados, mas também retangulares. Certamente, alguma sobrecarga de sinalização e complexidade computacional aumentada no lado de codificador é o preço do particionamento de QTBT quando comparado ao particionamento baseado em árvore quaternária convencional usado no padrão HEVC/H.265. Apesar disso, o particionamento baseado em QTBT é dotado com melhores propriedades de segmentação e, consequentemente, demonstra significativamente maior eficiência de codificação que o de árvore quaternária convencional.
[0178] As folhas das árvores usadas para particionamento estão sendo processadas em uma ordem de varredura Z, de maneira que o bloco atual correspondendo à folha atual terá blocos vizinhos à esquerda e acima, que já foram reconstruídos durante processos de codificação ou de decodificação, a não ser que o bloco atual esteja localizado no limite da fatia. Isto também está ilustrado na figura 12. Varredura da esquerda para a direita das folhas da árvore mostrada na parte direita da figura 12 corresponde à ordem de varredura Z espacial dos blocos mostrados na parte esquerda desta figura. A mesma varredura é aplicada no caso de árvore quaternária ou árvores de múltiplos tipos.
[0179] Para predição intra direcional, amostras de referência são obtidas das amostras dos blocos vizinhos reconstruídos anteriormente. Dependendo do tamanho do bloco e do modo de predição intra, um filtro pode ser aplicado às amostras de referência antes de serem usadas para obter valores de amostras preditas.
[0180] Em caso de suavização de limite e PDPC, várias primeiras colunas ou várias primeiras linhas do bloco predito são combinadas com o sinal de predição adicional gerado das amostras vizinhas.
[0181] Implementação particular de uma PDPC simplificada pode ser realizada de modo diferente, dependendo do modo de predição intra:
para modos de predição intra planar, DC, HOR/VER (horizontal/vertical) (denotados como 0, 1, 18, 50 respectivamente na figura 10B e na figura 10C), as etapas seguintes são realizadas: a amostra predita 𝑃̂ (𝑥, 𝑦) localizada em (x, y) é calculada como a seguir: 𝑃̂(𝑥, 𝑦) = Clip1Cmp( (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 − 𝑤𝑇𝐿 × 𝑅−1,−1 + (64 − 𝑤𝑙 − 𝑤𝑇 + 𝑤𝑇𝐿) × 𝑃(𝑥, 𝑦) + 32)) ≫ 6) (1) onde Rx,-1, R-1,y representam as amostras de referência localizadas acima e à esquerda da amostra atual (x, y), e R- 1,-1 representa a amostra de referência localizada no canto esquerdo superior do bloco atual. P(x,y) denota o valor da amostra predita ao aplicar o modo de predição intra planar, DC ou HOR/VER, tal como indicado acima. A função clip1Cmp é estabelecida como segue: - Se cIdx, um parâmetro que especifica o componente de cor do bloco atual, for igual a 0, clip1Cmp é estabelecido igual a Clip1Y. - De outro modo, clip1Cmp é estabelecido igual a Clip1C Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x ) Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x ) x ; z < x Clip3( x, y, z ) = { y ; z > y z ; de outro modo BitDepthY é a profundidade de bits de amostras de luma. BitDepthC é a profundidade de bits de amostras de croma. BitDepthY e BitDepthC podem ser sinalizados em conjunto de parâmetros de sequência (SPS) de um fluxo de bits.
[0182] Definições alternativas de Clip1Y( x ) e Clip1C( x ) são possíveis. Em particular, tal como descrito por F. Galpin, P. Bordes e F. Le Léannec na contribuição
JVET-C0040 “Adaptive Clipping in JEM2.0”, 𝐶𝑙𝑖𝑝1𝐶𝑚𝑝(𝑥) = 𝐶𝑙𝑖𝑝3( 𝑚𝑖𝑛𝐶 , 𝑚𝑎𝑥𝐶 , 𝑥), onde 𝑚𝑖𝑛𝐶 é o limite de recorte inferior usado em fatia atual para ID de componente C, 𝑚𝑎𝑥𝐶 é o limite de recorte superior usado em fatia atual para ID de componente C, C é um componente de cor (por exemplo, Y para luma, Cb e Cr para croma), “x >> y” é um deslocamento aritmético para a direita de uma representação inteira de complemento dos dois de x por y dígitos binários. Esta função é definida somente para valores inteiros não negativos de y. Bits deslocados para os bits mais significativos (MSBs) como um resultado do deslocamento para a direita têm um valor igual ao MSB de x antes da operação de deslocamento.
[0183] Os pesos de modo DC são calculados como a seguir: 𝑤𝑇 = 32 ≫ ((𝑦 ≪ 1) ≫ 𝑑𝑒𝑠𝑙𝑜𝑐𝑎𝑚𝑒𝑛𝑡𝑜), 𝑤𝐿 = 32 ≫ ((𝑥 ≪ 1) ≫ 𝑑𝑒𝑠𝑙𝑜𝑐𝑎𝑚𝑒𝑛𝑡𝑜), 𝑤𝑇𝐿 = (𝑤𝐿 ≫ 4) + (𝑤𝑇 ≫ 4), Onde 𝑑𝑒𝑠𝑙𝑜𝑐𝑎𝑚𝑒𝑛𝑡𝑜 = (log 2 (𝑙𝑎𝑟𝑔𝑢𝑟𝑎) + log 2 (𝑎𝑙𝑡𝑢𝑟𝑎) + 2) ≫ 2.
[0184] Para o modo planar, wTL = 0, enquanto que para o modo horizontal wTL = wT e para modo vertical wTL = wL. Como um exemplo, pesos de PDPC de modo DC (wL, wT, wTL) para as posições (0, 0) e (1, 0) dentro de um bloco 4x4 estão mostrados na figura 13. Desta figura segue-se que uma operação de recorte tal como definida, por exemplo, na equação (1) é obrigatória. Entretanto, a implementação de PDPC do estado da técnica tem uma potencial falha, o que é ilustrado no exemplo exposto a seguir onde o resultado do procedimento de recorte pode ficar fora da faixa determinada por BitDepthY ou BitDepthC : dado 𝑅−1,𝑦 = 0, 𝑅𝑥,−1 = 0, 𝑅−1,−1 = 100, 𝑃(𝑥, 𝑦) = 0, da equação (1) segue-se que para a posição (0,0) de um bloco predito 4x4 𝑃̂(𝑥, 𝑦) = Clip1Cmp( (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 − 𝑤𝑇𝐿 × 𝑅−1,−1 + (64 − 𝑤𝑙 − 𝑤𝑇 + 𝑤𝑇𝐿) × 𝑃(𝑥, 𝑦) + 32)) ≫ 6) = Clip1Cmp( (−𝑤𝑇𝐿 × 𝑅−1,−1 + 32) ≫ 6) = Clip1Cmp( (−4 × 100 + 32) ≫ 6), com wTL=4, tal como mostrado na figura 13.
[0185] Tal como visto no exemplo acima, um valor negativo “-4×100+32=-368” está sendo deslocado para a direita usando deslocamento aritmético de bits. Dependendo da implementação, o deslocamento aritmético de bits para a direita de um valor negativo pode resultar em saída diferente (por exemplo, no caso de linguagem de programação C/C++) e assim não pode ser garantido que a saída Clip1Cmp() sempre será 0, uma vez que o resultado do deslocamento de um valor negativo para a direita pode ter um sinal positivo e uma magnitude diferente de zero em implementações específicas.
[0186] Embora a questão relacionada com recorte realizado em PDPC seja descrita para predição intra planar, uma situação similar pode ocorrer para PDPC usando predição intra DC.
[0187] Para modos diagonais (denotados como 2 e 66 na figura 10B e na figura 10C) e adjacentes (modos direcionais não menores que 58 ou não maiores que 10 na figura 10B ou na figura 10C) processamento é realizado tal como descrito a seguir usando a mesma fórmula (1).
[0188] A figura 14A ilustra a definição das amostras de referência Rx,-1, R-1,y e R-1,-1 para a extensão de PDPC para o modo diagonal superior direito. A amostra de predição pred(x’, y’) está localizada em (x’, y’) dentro do bloco de predição. A coordenada x da amostra de referência Rx,-1 é dada por: x = x’ + y’ + 1, e a coordenada y da amostra de referência R-1,y de modo similar é dada por: y = x’ + y’ + 1.
[0189] Os pesos de PDPC para o modo diagonal superior direito são: wT = 16 >> ( ( y’<<1 ) >> deslocamento ), wL = 16 >> ( ( x’<<1 ) >> deslocamento ), wTL = 0.
[0190] De modo similar, a figura 14B ilustra a definição das amostras de referência Rx,-1, R-1,y e R-1,-1 para a extensão de PDPC para o modo diagonal inferior esquerdo. A coordenada x da amostra de referência Rx,-1 é dada por: x = x’ + y’ + 1, e a coordenada y da amostra de referência R-1,y é: y = x’ + y’ + 1. Os pesos de PDPC para o modo diagonal inferior esquerdo são: wT = 16 >> ( ( y’<<1 ) >> deslocamento ), wL = 16 >> ( ( x’<<1 ) >> deslocamento ), wTL = 0. O caso de um modo diagonal superior direito adjacente está ilustrado na figura 14C. Os pesos de PDPC para um modo diagonal superior direito adjacente são: wT = 32 >> ( ( y’<<1 ) >> deslocamento ), wL = 0, wTL = 0. De modo similar, o caso de um modo diagonal inferior esquerdo adjacente está ilustrado na figura 14D. Os pesos de PDPC para um modo diagonal inferior esquerdo adjacente são: wL = 32 >> ( ( x’<<1 ) >> deslocamento ), wT =0, wTL = 0. As coordenadas de amostras de referência para os dois últimos casos são computadas usando as tabelas que já são usadas para predição intra de modo angular. Interpolação linear das amostras de referência é usada se coordenadas de amostras de referência fracionárias forem calculadas.
[0191] PDPC simplificada pode ser realizada tal como especificado na especificação de VVC. Adicionalmente, as seguintes definições são usadas: 256∗32 invAngle = Round(intraPredAngle), é o valor de ângulo inverso, Round( x ) = Sign( x ) * Floor( Abs( x ) + 0,5 ), 1 ; x > 0 Sign( x ) = { 0 ; x = = 0 −1 ; x < 0 Floor( x ) é o maior número inteiro igual ou menor que x, Log2( x ) é o logaritmo de base 2 de x. intraPredAngle é o parâmetro de ângulo especificado na Tabela 4, A = C ? B : D é uma operação de designação ternária, onde A é estabelecido igual a B se a condição C for verdadeira. De outro modo, se a condição C for falsa, A é estabelecido igual a D. INTRA_PLANAR é um modo de predição intra planar (), INTRA_DC é um modo de predição intra DC, INTRA_ANGULARXX é um dos modos de predição intra direcional, onde XX denota seu número e direção correspondente mostrada na figura 10B ou 10C.
[0192] Se um termo não estiver explicado neste documento, é entendido que sua definição pode ser encontrada na especificação de VVC ou na especificação padrão de HEVC/H.265.
[0193] Dadas as definições acima, as etapas de PDPC simplificada podem ser definidas como a seguir: Entradas para este processo são: - o modo de predição intra predModeIntra,
- uma variável nTbW especificando a largura de bloco de transformada, - uma variável nTbH especificando a altura de bloco de transformada, - uma variável refW especificando a largura de amostras de referência, - uma variável refH especificando a altura de amostras de referência, - as amostras preditas predSamples[ x ][ y ], com x = x = 0..nTbW − 1, y = 0..nTbH − 1, - as amostras vizinhas p[ x ][ y ], com x = x = −1, y = −1..refH − 1 e x = 0..refW − 1, y = −1, - uma variável cIdx especificando o componente de cor do bloco atual. As saídas deste processo são as amostras preditas modificadas predSamples[ x ][ y ] com
0..nTbW − 1, y = 0..nTbH − 1.
[0194] Dependendo do valor de cIdx, a função clip1Cmp é estabelecida como se segue: - Se cIdx for igual a 0, clip1Cmp é estabelecida igual a Clip1Y. - De outro modo, clip1Cmp é estabelecida igual a Clip1C.
[0195] A variável nScale é estabelecida para ( ( Log2( nTbW ) + Log2( nTbH ) - 2 ) >> 2 ).
[0196] Os conjuntos de amostras de referência mainRef[ x ] e sideRef[ y ] com x = 0..refW - 1 e y = 0..refH - 1 são derivados como a seguir: mainRef[ x ] = p[ x ][ -1 ] sideRef[ y ] = p[ -1 ][ y ]
[0197] As variáveis refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] e wTL[ x ][ y ] com x = 0..nTbW - 1, y =0..nTbH - 1 são derivadas como a seguir: - Se predModeIntra for igual a INTRA_PLANAR, INTRA_DC, INTRA_ANGULAR18 ou INTRA_ANGULAR50, o seguinte se aplica: refL[ x ][ y ] = p[ -1 ][ y ] refT[ x ][ y ] = p[ x ][ -1 ] wT[ y ] = 32 >> ( ( y << 1 ) >> nScale ) wL[ x ] = 32 >> ( ( x << 1 ) >> nScale ) wTL[ x ][ y ] = ( predModeIntra = = INTRA_DC ) ? ( ( wL[ x ] >> 4 ) + ( wT[ y ] >> 4 ) ) : 0 - De outro modo, se predModeIntra for igual a INTRA_ANGULAR2 ou INTRA_ANGULAR66, o seguinte se aplica: refL[ x ][ y ] = p[ -1 ][ x + y + 1 ] refT[ x ][ y ] = p[ x + y + 1 ][ -1 ] wT[ y ] = ( 32 >> 1 ) >> ( ( y << 1 ) >> nScale ) wL[ x ] = ( 32 >> 1 ) >> ( ( x << 1 ) >> nScale ) wTL[ x ][ y ] = 0 - De outro modo, se predModeIntra for igual ou menor que INTRA_ANGULAR10, as etapas ordenadas a seguir se aplicam:
1. As variáveis dXPos[ y ], dXFrac[ y ], dXInt[ y ] e dX[ x ][ y ] são derivadas como a seguir usando invAngle: dXPos[ y ] = ( ( y + 1 ) * invAngle + 2 ) >> 2 dXFrac[ y ] = dXPos[ y ] & 63 dXInt[ y ] = dXPos [ y ] >> 6 dX[ x ][ y ] = x + dXInt[ y ]
2. As variáveis refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] e wTL[ x ][ y ] são derivadas como a seguir: refL[ x ][ y ] = 0 refT[ x ][ y ] = ( dX[ x ][ y ] < refW - 1 ) ? ( ( 64 - dXFrac[ y ] ) * mainRef[ dX[ x ][ y ] ] + dXFrac[ y ] * mainRef[ dX[ x ][ y ] + 1 ] + 32 ) >> 6 : 0 (Equação 1) wT[ y ] = ( dX[ x ][ y ] < refW - 1 ) ? 32 >> ( ( y << 1 ) >> nScale ) : 0 wL[ x ] = 0 wTL[ x ][ y ] = 0 - De outro modo, se predModeIntra for igual ou maior que INTRA_ANGULAR58 (ver a figura 10B ou 10C), as etapas ordenadas a seguir se aplicam:
1. As variáveis dYPos[ x ], dYFrac[ x ], dYInt[ x ] e dY[ x ][ y ] são derivadas como a seguir usando invAngle tal como especificado a seguir dependendo de intraPredMode: dYPos[ x ] = ( ( x + 1 ) * invAngle + 2 ) >> 2 dYFrac[ x ] = dYPos[ x ] & 63 dYInt[ x ] = dYPos[ x ] >> 6 dY[ x ][ y ] = y + dYInt[ x ]
2. As variáveis refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] e wTL[ x ][ y ] são derivadas como a seguir: refL[ x ][ y ] = ( dY[ x ][ y ] < refH - 1 ) ? ( ( 64 - dYFrac[ x ] ) * sideRef[ dY[ x ][ y ] ] + dYFrac[ x ] * sideRef[ dY[ x ][ y ] + 1 ] + 32 ) >> 6 : 0 (Equação 2) refT[ x ][ y ] = 0 wT[ y ] = 0 wL[ x ] = ( dY[ x ][ y ] < refH - 1 ) ? 32 >> ( ( x << 1 ) >> nScale ) : 0 wTL[ x ][ y ] = 0
- De outro modo, refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] e wTL[ x ][ y ] são todas estabelecidas iguais a
0.
[0198] Os valores das amostras preditas modificadas predSamples[ x ][ y ] com x = 0..nTbW - 1, y =0..nTbH - 1 são derivados como a seguir: predSamples[ x ][ y ] = clip1Cmp( ( refL[ x ][ y ] * wL[ x ] + refT[ x ][ y ] * wT[ y ] - p[ -1 ][ -1 ] * wTL[ x ][ y ] + ( 64 - wL[ x ] - wT[ y ] + wTL[ x ][ y ] ) * predSamples[ x ][ y ] + 32 ) >> 6 )
[0199] Na designação da Equação 1 acima, a PDPC simplificada pode usar interpolação de vizinho mais próximo em vez de interpolação linear: refT[ x ][ y ] = ( dX[ x ][ y ] < refW - 1 ) ? mainRef[ dX[ x ][ y ] ] : 0
[0200] De modo similar, na designação da Equação 2 acima, a PDPC simplificada também pode usar interpolação de vizinho mais próximo: refL[ x ][ y ] = ( dY[ x ][ y ] < refH - 1 ) ? sideRef[ dY[ x ][ y ] ] : 0
[0201] Assim, em ambos de o lado de codificador e o lado de decodificador, o método usa o seguinte como os dados de entrada: modo de predição intra direcional (denotado também como predModeIntra, o qual está mostrado na figura 10B e na figura 10C) parâmetro de tamanho de bloco nTbS, o qual é estabelecido igual a (log2( nTbW) + Log2(nTbH) ) >> 1, onde nTbW e nTbH denotam largura e altura do bloco predito,
respectivamente, e “>>” denota uma operação de deslocamento para a direita.
[0202] A modificação da especificação de VVC que capacita uso do método pode compreender substituir “as amostras vizinhas p[ x ][ y ]” por “as amostras de referência p[ x ][ y ]” na seção descrevendo PDPC simplificada.
[0203] O parâmetro de ângulo intraPredAngle denota o deslocamento de subpixel entre duas linhas adjacentes de amostras preditas em representação de ponto fixo tendo um comprimento de parte fracionária igual a 5 bits. Este parâmetro (intraPredAngle) pode ser derivado da predição intra mod(predModeIntra)e. Uma derivação exemplar de intraPredAngle de predModeIntra pode ser definida com uma tabela de consulta (LUT), por exemplo, tal como está mostrado na Tabela 4. Tabela 4: Uma LUT Exemplar Para Derivar IntraPredAngle de PredModeIntra predModeIntra -14 -13 -12 -11 intraPredAngle 512 341 256 171 predModeIntra -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 2 3 4 5 6 7 8 intraPredAngle 128 102 86 73 64 57 51 45 39 35 32 29 26 23 20 18 16 predModeIntra 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 intraPredAngle 14 12 10 8 6 4 3 2 1 0 -1 -2 -3 -4 -6 -8 -10 predModeIntra 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 intraPredAngle -12 -14 -16 -18 -20 -23 -26 -29 -32 -29 -26 -23 -20 -18 -16 -14 -12 predModeIntra 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 intraPredAngle -10 -8 -6 -4 -3 -2 -1 0 1 2 3 4 6 8 10 12 14 predModeIntra 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 intraPredAngle 16 18 20 23 26 29 32 35 39 45 51 57 64 73 86 102 128 predModeIntra 77 78 79 80 intraPredAngle 171 256 341 512
[0204] A partir da especificação de esboço de HEVC e VVC atual, um método de predição intra planar é usado. A parte do esboço 3 de VVC está incorporada a seguir para referência:
8.2.4.2.5. Especificação de modo de predição intra INTRA_PLANAR Entradas para este processo são: - uma variável nTbW especificando a largura de bloco de transformada, - uma variável nTbH especificando a altura de bloco de transformada, - as amostras vizinhas p[ x ][ y ], com x = -1, y = -
1..nTbH e x = 0..nTbW, y = -1. As saídas deste processo são as amostras preditas predSamples[ x ][ y ], com x = 0..nTbW - 1, y = 0..nTbH - 1.
[0205] Os valores das amostras de predição predSamples[ x ][ y ] com x = 0..nTbW - 1 e y = 0..nTbH - 1 são derivados como a seguir: predV[ x ][ y ] = ( ( nTbH - 1 - y ) * p[ x ][ -1 ] + ( y + 1 ) * p[ -1 ][ nTbH ] ) << Log2 ( nTbW ) (8-82) predH[ x ][ y ] = ( ( nTbW - 1 - x ) * p[ -1 ][ y ] + ( x + 1 ) * p[ nTbW ][ -1 ] ) << Log2 ( nTbH ) (8-83) predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ) (8-84)
[0206] A presente revelação aborda o problema descrito acima relacionado com uma operação de deslocamento de um valor negativo ao aplicar predição intra DC usando
PDPC, o que pode resultar em um valor de amostra predita errôneo.
[0207] A solução fornecida envolve um método de PDPC alternativo que não tem a falha da equação (1).
[0208] Especificamente, o método compreende as etapas seguintes, tais como ilustradas no fluxograma da figura 15. O método ilustrado de predição intra de um bloco de uma imagem é realizado para cada amostra de uma pluralidade de amostras do bloco.
[0209] Na etapa S100, um valor de amostra predita de um ou mais valores de amostras de referência é obtido por meio de predição intra usando um modo de predição intra DC.
[0210] Adicionalmente, na etapa S110, o valor de amostra predita é multiplicado por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada. Em particular, o fator de ponderação de amostra é calculado como ( ( 2 << p ) - wL - wT ), em que p é uma precisão do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical.
[0211] Na etapa S120, um valor adicional é acrescentado ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada.
[0212] Na etapa S130, o valor de amostra predita não normalizada é normalizado por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada.
[0213] Consequentemente, por meio do método ilustrado, valores de amostras preditas normalizadas podem ser determinados aplicando predição intra DC na estrutura de PDPC enquanto que impedindo ocorrência de valores de predição errôneos ao realizar um método de determinação não exigindo necessariamente um procedimento de recorte.
[0214] Notar que para as etapas de método ilustradas acima assim como para as etapas de método ilustradas a seguir processamento adicionalmente pode ser aplicado.
[0215] Por exemplo, valores residuais podem ser adicionados aos valores de amostras preditas normalizadas, resultando em valores de amostras reconstruídas.
[0216] Em uma modalidade, o valor adicional pode incluir um deslocamento de arredondamento. Uma operação de deslocamento aritmético para a direita, a qual corresponde a uma divisão por uma potência de dois, tipicamente resulta em um valor arredondado. A fim de assegurar um resultado arredondado de modo apropriado, um deslocamento de arredondamento pode ser adicionado antes de realizar a operação de deslocamento para a direita. O valor de deslocamento de arredondamento corresponde à metade de um valor inteiro após realizar a operação de deslocamento para a direita. Assim, adicionar o deslocamento de arredondamento assegura um valor resultante arredondado de modo apropriado. Por exemplo, em um caso de um deslocamento para a direita por 6 bits, o qual corresponde a uma divisão por 26=64, o deslocamento de arredondamento seria 32.
[0217] Em outra modalidade, um método de predição intra de um primeiro bloco e de um segundo bloco de uma imagem é fornecido. Para cada amostra de uma pluralidade de amostras do primeiro bloco assim como para cada amostra de uma pluralidade de amostras do segundo bloco, as etapas ilustradas na figura 15 e etapas descritas acima são realizadas, com a diferença em que o modo de predição intra usado para obter os valores de amostras preditas para o primeiro bloco é um modo de predição intra DC, e o modo de predição intra usado para obter os valores de amostras preditas para o segundo bloco é um modo de predição intra planar.
[0218] Especificamente, para cada amostra do primeiro bloco, na etapa S100, um valor de amostra predita é obtido de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra DC. Adicionalmente, para cada amostra do segundo bloco, na etapa S100, um valor de amostra predita é obtido de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra PLANAR
[0219] Em uma modalidade, os métodos descritos podem ser incluídos em um método de codificar ou decodificar uma imagem. Especificamente, valores de amostras preditas podem ser obtidos ao realizar as etapas de qualquer um de métodos indicados anteriormente. Adicionalmente, ao adicionar valores residuais aos valores de amostras preditas normalizadas obtidos, valores de amostras reconstruídas podem ser obtidos.
[0220] Modalidades da presente revelação podem possibilitar um benefício técnico em simplificação de projeto de hardware e um número reduzido de verificações condicionais a ser realizadas. As etapas realizadas para obter valores de amostras preditas para modos de predição intra Planar e DC são diferentes das etapas de predição intra direcional. Uma implementação de hardware exemplar de predição intra conteria pelo menos dois módulos: - módulo de predição intra direcional,
- módulo de predição intra não direcional.
[0221] Por este motivo, é desejável harmonizar, em primeiro lugar, a filtragem de PDPC dentro de cada um destes grupos. Levando em conta o fato de que a complexidade de PDPC para modo DC excede a complexidade de PDPC para modo planar, a presente revelação permite simplificar processamento de PDPC para o modo DC.
[0222] Os dois módulos implementariam seus próprios processamentos de filtragem de PDPC de acordo com as modalidades da invenção. As soluções de técnica anterior exigiam realizar uma verificação adicional a respeito de se o modo de predição intra é DC ou planar na filtragem de PDPC no módulo de predição intra não direcional ou implementar módulos de filtragem de PDPC separados para modos de predição intra DC e planar, o que causa complexidade de hardware e consumo de energia aumentados. Consequentemente, harmonizar PDPC para ambos os modos DC e planar pode permitir compartilhar processamento de PDPC (no case de hardware, um módulo correspondente) para modos de predição intra DC e planar.
[0223] Outro benefício técnico de modalidades de acordo com a presente revelação é revelado ao ser usado em projeto de predição intra de codificadores simplificados. O modo de predição intra DC tipicamente é o modo de predição intra de forma computacional mais simples e assim, em um cenário de pior caso, complexidade de filtragem de PDPC pode exceder a complexidade do modo DC propriamente dito. Ao reduzir o número de verificações condicionais e/ou a quantidade de operações para o modo DC, de acordo com a presente revelação, a complexidade total de predição intra pode ser reduzida, especialmente nos cenários de codificação simplificada que é implementada em codificadores assim chamados de “pouco ativos”, os quais operam com um conjunto restringido de modos de predição intra.
[0224] O método proposto pode ser implementado ao definir dentro do método de predição intra não direcional que processamento de PDPC é o mesmo para ambos os modos de predição intra processados pelo dito módulo. Em outras palavras, uma modalidade da presente revelação pode ser concretizada ao introduzir mudanças para um módulo de predição intra não direcional somente em um modo em que processamento de PDPC é o mesmo para modos de predição intra DC e planar.
[0225] Cada um dos fatores de ponderação wL e wT pode ser uma potência de dois, o que pode permitir implementação de uma multiplicação com isto usando um operador de deslocamento. Esta definição é favorável a hardware e pode permitir eficiência de processamento aperfeiçoada. Assim, harmonizar o processamento de PDPC ao usar o modo de predição intra DC com o processamento de PDPC ao usar o modo de predição intra planar pode simplificar predição intra usando PDPC, por exemplo. Os métodos descritos acima podem ser realizados por um dispositivo preditor, um dispositivo codificador ou um dispositivo decodificador tal como ilustrado na figura 16A, por exemplo.
[0226] O dispositivo preditor, codificador ou decodificador 1000 compreende um obtentor 1010, um multiplicador 1020, um somador 1030 e um normalizador 1040. O obtentor 1010 é configurado para obter um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra DC. O multiplicador 1020 é configurado para multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada. Em particular, o fator de ponderação é ((2 << p) - wL - wT), em que p é um parâmetro (uma precisão, por exemplo) do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical. O somador 1030 é configurado para somar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada, e o normalizador 1040 é configurado para normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada.
[0227] De modo similar, em uma modalidade, o obtentor 1010 do dispositivo preditor, codificador ou decodificador 1000 pode ser configurado para obter, para cada amostra de uma pluralidade de amostras de um primeiro bloco e para cada amostra de uma pluralidade de amostras de um segundo bloco, um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra. O modo de predição intra usado para obter os valores preditos da amostra pode ser um modo de predição intra DC para o primeiro bloco e um modo de predição intra planar para o segundo bloco. O multiplicador 1020 é configurado para multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada. Em particular, o fator de ponderação é ((2 << p) - wL - wT), em que p é um parâmetro
(uma precisão, por exemplo) do fator de ponderação de amostra, wL é um fator de ponderação horizontal e wT é um fator de ponderação vertical. O somador 1030 é configurado para somar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada, e o normalizador 1040 é configurado para normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada.
[0228] O dispositivo preditor, codificador ou decodificador 1000, em uma modalidade, pode também adicionar um valor residual aos valores de amostras preditas normalizadas, resultando em valores de amostras reconstruídas.
[0229] Em uma modalidade do método descrito, o fator de ponderação horizontal wL pode ser um fator que é aplicado a um valor de uma amostra de referência esquerda resultando em um valor de amostra de referência esquerda ponderada. Adicionalmente, o fator de ponderação vertical wT pode ser um fator que é aplicado a um valor de uma amostra de referência superior resultando em um valor de amostra de referência superior ponderada.
[0230] Especificamente, por exemplo, os valores de amostras de referência esquerda e superior ponderadas podem ser obtidos por meio de multiplicação dos valores de amostras de referência esquerda e superior, respectivamente, pelos fatores de ponderação horizontal e vertical correspondentes wL e wT.
[0231] Adicionalmente, em uma modalidade, o valor adicional pode ser obtido incluindo uma soma de o valor de amostra de referência superior ponderada e os valores de amostras de referência esquerdas ponderadas.
[0232] Os componentes funcionais do dispositivo codificador ou decodificador 1000 podem ser implementados por meio do conjunto de circuitos de processamento 1040 configurado para realizar qualquer um dos métodos indicados anteriormente, tal como ilustrado na figura 16B.
[0233] Em uma modalidade, o conjunto de circuitos de processamento pode compreender um ou mais processadores 1050 e um meio de armazenamento não transitório legível por computador 1060, o qual é conectado ao um ou mais processadores 1050. O meio de armazenamento inclui código de programa, o qual, quando executado por um processador, induz o processador para realizar qualquer um dos métodos indicados anteriormente.
[0234] Em uma modalidade específica, o método pode compreender a seguinte etapa: a amostra predita normalizada 𝑃̂(𝑥, 𝑦) localizada em (x, y) pode ser calculada como a seguir: 𝑃̂(𝑥, 𝑦) = (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 + (64 − 𝑤𝐿 − 𝑤𝑇) × 𝑃(𝑥, 𝑦) + 32)) ≫ 6 (2) onde Rx,-1, R-1,y representam as amostras de referência localizadas acima (superior) e à esquerda da amostra atual (x, y), respectivamente. P(x,y) denota o valor da amostra predita, a qual é predita usando um modo de predição intra DC. Na fórmula acima, a amostra predita ponderada é representada por (64 − 𝑤𝐿 − 𝑤𝑇) × 𝑃(𝑥, 𝑦) e o valor adicional é representado por 𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 + 32. A normalização é representada pela operação de deslocamento para a direita bit a bit >>6. Entretanto, a presente revelação não está limitada à definição específica do valor adicional, a operação de deslocamento por 6 bits.
[0235] É importante notar que a função clip1Cmp não está em uso em uma modalidade utilizando a equação (2) uma vez que os valores da amostra predita P(x,y) estão sempre na faixa de valores válidos, isto é, entre o mínimo e o máximo de valores de pixels. Entretanto, a presente revelação não está limitada a não realizar uma operação de recorte e recorte ainda pode ser aplicado.
[0236] Por exemplo, um valor de amostra predita normalizada pode ser computado do valor de amostra predita, incluindo calcular (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 + (64 − 𝑤𝐿 − 𝑤𝑇) × 𝑃(𝑥, 𝑦) + 32) ≫ 6
[0237] Nesta forma de implementação, a normalização é realizada pelo operador de deslocamento para a direita >>6. A presente revelação não está limitada à computação específica dada acima, e um cálculo matemático equivalente pode ser realizado.
[0238] Assim, o problema de valores negativos resultando na ocorrência de valores de amostras preditas diferentes de zero positivos errôneos pelo uso da dita operação de recorte pode ser impedido aplicando o cálculo mencionado anteriormente do valor de amostra predita.
[0239] Nas fórmulas acima, “x >> y” é um deslocamento aritmético para a direita de uma representação inteira de complemento dos dois de x por y dígitos binários. Esta função é definida somente para valores inteiros não negativos de y. Bits deslocados para os bits mais significativos (MSBs) como um resultado do deslocamento para a direita têm um valor igual ao MSB de x antes da operação de deslocamento.
[0240] Os pesos de modo DC podem ser calculados como a seguir: 𝑤𝑇 = 32 ≫ ((𝑦 ≪ 1) ≫ 𝑑𝑒𝑠𝑙𝑜𝑐𝑎𝑚𝑒𝑛𝑡𝑜), 𝑤𝐿 = 32 ≫ ((𝑥 ≪ 1) ≫ 𝑑𝑒𝑠𝑙𝑜𝑐𝑎𝑚𝑒𝑛𝑡𝑜), onde 𝑑𝑒𝑠𝑙𝑜𝑐𝑎𝑚𝑒𝑛𝑡𝑜 = (log 2 (𝑙𝑎𝑟𝑔𝑢𝑟𝑎) + log 2 (𝑎𝑙𝑡𝑢𝑟𝑎) + 2) ≫ 2.
[0241] Como um exemplo, pesos de PDPC de modo DC (wL, wT) para as posições (0, 0) e (1, 0) dentro de um bloco 4x4 estão mostrados na figura 17. Neste exemplo, o valor dos pesos wL e wT é 32 para a amostra predita nas coordenadas (0,0). Adicionalmente, no exemplo, o valor do peso wL é 8 e o valor do peso wT é 32 para a amostra predita nas coordenadas (1,0). Pode ser notado que, em comparação com os pesos para amostras preditas nas coordenadas (0,0) e (1,0) ilustradas na figura 13, a amostra de referência esquerda superior não é usada e um peso para esta amostra (amostra de referência esquerda superior) não é especificado. Entretanto, a presente revelação não está limitada ao procedimento de cálculo de peso de PDPC de modo DC descrito e os ditos pesos de PDPC de modo DC podem ser determinados em um modo diferente ou aplicando uma fórmula diferente.
[0242] O método fornecido pode ser representado na forma de uma parte da especificação de VVC: processo de filtragem de amostra de predição intra dependente de posição entradas para este processo são: - o modo de predição intra predModeIntra, - uma variável nTbW especificando a largura de bloco de transformada,
- uma variável nTbH especificando a altura de bloco de transformada, - uma variável refW especificando a largura de amostras de referência, - uma variável refH especificando a altura de amostras de referência, - as amostras preditas predSamples[ x ][ y ], com x =
0..nTbW - 1, y = 0..nTbH - 1, - as amostras vizinhas p[ x ][ y ], com x = -1, y = -
1..refH - 1 e x = 0..refW - 1, y = -1, - uma variável cIdx especificando o componente de cor do bloco atual. As saídas deste processo são as amostras preditas modificadas predSamples[ x ][ y ] com x = 0..nTbW - 1, y =
0..nTbH - 1.
[0243] Dependendo do valor de cIdx, a função clip1Cmp é estabelecida como segue: - Se cIdx for igual a 0, clip1Cmp é estabelecida igual a Clip1Y. - De outro modo, clip1Cmp é estabelecida igual a Clip1C.
[0244] A variável nScale é estabelecida para ( ( Log2( nTbW ) + Log2( nTbH ) - 2 ) >> 2 ).
[0245] Os conjuntos de amostras de referência mainRef[ x ] e sideRef[ y ] com x = 0..refW - 1 e y = 0..refH - 1 são derivados como a seguir: mainRef[ x ] = p[ x ][ -1 ] sideRef[ y ] = p[ -1 ][ y ]
[0246] As variáveis refL[ x ][ y ], refT[ x ][ y ] wT[ y ] e wL[ x ] com x = 0..nTbW - 1, y =0..nTbH - 1 são derivadas como a seguir:
- Se predModeIntra for igual a INTRA_PLANAR, INTRA_DC, INTRA_ANGULAR18 ou INTRA_ANGULAR50, o seguinte se aplica: refL[ x ][ y ] = p[ -1 ][ y ] refT[ x ][ y ] = p[ x ][ -1 ] wT[ y ] = 32 >> ( ( y << 1 ) >> nScale ) wL[ x ] = 32 >> ( ( x << 1 ) >> nScale ) - De outro modo, se predModeIntra for igual a INTRA_ANGULAR2 ou INTRA_ANGULAR66, o seguinte se aplica: refL[ x ][ y ] = p[ -1 ][ x + y + 1 ] refT[ x ][ y ] = p[ x + y + 1 ][ -1 ] wT[ y ] = ( 32 >> 1 ) >> ( ( y << 1 ) >> nScale ) wL[ x ] = ( 32 >> 1 ) >> ( ( x << 1 ) >> nScale ) - De outro modo, se predModeIntra for igual ou menor que INTRA_ANGULAR10, as etapas ordenadas a seguir se aplicam:
1. As variáveis dXPos[ y ], dXFrac[ y ], dXInt[ y ] e dX[ x ][ y ] são derivadas como a seguir usando invAngle tal como especificado na cláusula 8.2.4.2.7 dependendo de intraPredMode: dXPos[ y ] = ( ( y + 1 ) * invAngle + 2 ) >> 2 dXFrac[ y ] = dXPos[ y ] & 63 dXInt[ y ] = dXPos [ y ] >> 6 dX[ x ][ y ] = x + dXInt[ y ]
2. As variáveis refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] são derivadas como a seguir: refL[ x ][ y ] = 0 refT[ x ][ y ] = ( dX[ x ][ y ] < refW - 1 ) ? ( ( 64 - dXFrac[ y ] ) * mainRef[ dX[ x ][ y ] ] + dXFrac[ y ] * mainRef[ dX[ x ][ y ] + 1 ] + 32 ) >> 6 : 0 wT[ y ] = ( dX[ x ][ y ] < refW - 1 ) ? 32 >> ( ( y << 1 ) >> nScale ) : 0 wL[ x ] = 0 - De outro modo, se predModeIntra for igual ou maior que INTRA_ANGULAR58, as etapas ordenadas a seguir se aplicam:
1. As variáveis dYPos[ x ], dYFrac[ x ], dYInt[ x ] e dY[ x ][ y ] são derivadas como a seguir usando invAngle tal como especificado na cláusula 8.2.4.2.7 dependendo de intraPredMode: dYPos[ x ] = ( ( x + 1 ) * invAngle + 2 ) >> 2 dYFrac[ x ] = dYPos[ x ] & 63 dYInt[ x ] = dYPos[ x ] >> 6 dY[ x ][ y ] = y + dYInt[ x ]
2. As variáveis refL[ x ][ y ], refT[ x ][ y ], wT[ y ] e wL[ x ] são derivadas como a seguir: refL[ x ][ y ] = ( dY[ x ][ y ] < refH - 1 ) ? ( ( 64 - dYFrac[ x ] ) * sideRef[ dY[ x ][ y ] ] + dYFrac[ x ] * sideRef[ dY[ x ][ y ] + 1 ] + 32 ) >> 6 : 0 refT[ x ][ y ] = 0 wT[ y ] = 0 wL[ x ] = ( dY[ x ][ y ] < refH - 1 ) ? 32 >> ( ( x << 1 ) >> nScale ) : 0 - De outro modo, refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] são todas estabelecidas iguais a 0. Os valores das amostras preditas modificadas predSamples[ x ][ y ] com x = 0..nTbW - 1, y =0..nTbH - 1 são derivados como a seguir: predSamples[ x ][ y ] = ( refL[ x ][ y ] * wL[ x ] + refT[ x ][ y ] * wT[ y ] + ( 64 - wL[ x ] - wT[ y ]) * predSamples[ x ][ y ] + 32 ) >> 6 )
Aqui “( 64 - wL[ x ] - wT[ y ])” representa fator de ponderação de amostra.
[0247] A figura 18 ilustra o método descrito acima. Por meio da linha tracejada a etapa de recorte está mostrada, a qual é realizada na PDPC do estado da técnica, mas não é necessariamente realizada no método proposto, uma vez que ela não é exigida, porque o coeficiente wTL não é usado.
[0248] Entrada para o método ilustrado são os valores de amostras de referência, os quais estão indicados na figura como ref[]. Usando a dita amostra de referência, uma predição intra para uma amostra atual é realizada. Em particular, a predição intra do valor de amostra atual pode ser realizada usando um modo de predição intra DC. Adicionalmente, valores adicionais são calculados usando os valores de amostras de referência esquerda e superior refL[x][y] e refT[x],[y], respectivamente, juntamente com o peso esquerdo correspondente wL[x] e wT[y]. O valor de amostra predita de modo intra é multiplicado por um fator de ponderação (64- wL[x]-wT[y]). Subsequentemente, os valores adicionais são somados ao valor de amostra predita ponderada. A seguir, como o valor de amostra predita ponderada, ao qual os valores adicionais tenham sido adicionados, não representa necessariamente um valor normalizado, um procedimento de normalização é realizado aplicando uma operação de deslocamento para a direita bit a bit indicado com “>>” na figura. O valor de amostra predita normalizada resultante não exige uma operação de recorte adicional (na figura, a operação de recorte desnecessária está indicada com linhas tracejadas).
[0249] Embora no exemplo ilustrado o fator de ponderação seja (64-wL[x]-wT[x]), a presente revelação não está limitada a isto. Em particular, o fator de ponderação de amostra pode exibir uma precisão diferente. Em outras palavras, o fator de ponderação de amostra pode ser expressado como ((2<<p)-wL-wT), com p sendo sua precisão. Adicionalmente, embora não exigido, um processo de recorte ainda pode ser realizado.
[0250] Na figura 14 amostras de referência são usadas pelo processo de predição intra para produzir amostras preditas. Cada amostra predita é ponderada adicionalmente usando um fator de ponderação de amostra. O fator de ponderação de amostra, por exemplo, pode ser igual a (64 - wL[ x ] - wT[ y ]). As mesmas amostras de referência são usadas para calcular valores adicionais para cada uma das amostras preditas dependendo de x e y, onde x e y definem a posição de uma amostra predita dentro de um bloco predito. Estes valores adicionais são acrescentados às amostras preditas ponderadas correspondentes. Cada amostra resultando desta operação é então normalizada por meio de deslocamento para a direita de acordo com a precisão predeterminada do fator de ponderação de amostra. Por exemplo, se o fator de ponderação de amostra for definido como ( 64 - wL[ x ] - wT[ y ]) ) a precisão é de 6 bits. Portanto, nesta etapa um deslocamento para a direita por 6 é realizado a fim de assegurar que possíveis valores mínimos e máximos dos valores de saída são os mesmos que os possíveis valores mínimos e máximos das amostras de referência. Entretanto, a presente revelação não está limitada a uma precisão de 6 bits, e qualquer outra precisão pode ser aplicada.
[0251] Um dos efeitos benéficos da solução proposta é que o mecanismo de predição intra PLANAR pode ser reutilizado para calcular os valores adicionais. Especificamente, predição intra PLANAR pode usar a equação seguinte para derivar valores de amostras preditas horizontais e verticais: predV[ x ][ y ] = ( ( nTbH - 1 - y ) * p[ x ][ -1 ] + + ( y + 1 ) * p[ -1 ][ nTbH ] ) << Log2 ( nTbW ) (8- 82) predH[ x ][ y ] = ( ( nTbW - 1 - x ) * p[ -1 ][ y ] + + ( x + 1 ) * p[ nTbW ][ -1 ] ) << Log2 ( nTbH ) (8-83)
[0252] A partir das duas equações (8-82) e (8-83) acima pode ser visto que predV[ x ][ y ] usa a amostra de referência p[x][-1] localizada na mesma coluna de predV[ x ][ y ] e predH[x][y] usa a amostra de referência p[-1][y] localizada na mesma linha de predH[x][y]. Além disso, as operações de deslocamento para a esquerda são realizadas como a etapa final e assim podem ser omitidas uma vez que elas não afetam cálculos intermediários que estão sendo reutilizados.
[0253] Nas fórmulas (8-82) e (8-83) acima, predV denota o valor de amostra predita vertical determinado aplicando predição intra planar e predH denota o valor de amostra predita horizontal determinado aplicando predição intra planar. Adicionalmente, nTbW e nTbH denotam a largura e a altura do bloco atual, respectivamente, ao realizar predição intra PLANAR. Entretanto, as variáveis nTbW, nTbH, x e y são entradas de método de predição intra PLANAR e assim podem ser ajustadas de modo correspondente. Por causa disso é possível substituir as variáveis de entrada ( nTbW - 1 - x ) por Dx e ( nTbH - 1 - y ) por Dy. Amostras de referência esquerda inferior e direita superior podem ser estabelecidas para 0 uma vez que estas são parâmetros que não estão sendo usados.
[0254] Considerando as observações descritas acima, as equações (8-82) e (8-83) acima podem ser regravadas de acordo com suas entradas sendo predeterminadas: Vy = Dy * p[ x ][ -1 ] Vx = Dx * p[ -1 ][ y ]
[0255] Assim, a unificações seguintes para determinar um valor adicional para ser somado ao valor de amostra predita ponderada podem ser realizadas: - um valor adicional no caso de modo horizontal (modo 18) pode ser calculado como Vy = Dy * p[ x ][ -1 ], em que Dy é estabelecido igual a wT[ y ]; - um valor adicional no caso de modo vertical (modo 50) pode ser calculado como Vx = Dx * p[ -1 ][ y ], em que Dx é estabelecido igual a wL[ y ]; - um valor adicional no caso de modo DC (modo 1) pode ser calculado como Vy + Vx, em que Dx e Dy são estabelecidos como nos dois casos anteriores, isto é, Dy é estabelecido igual a wT[y] e Dx é estabelecido igual a wL[y].
[0256] Por meio de alternação de seleção de amostra de referência pode ser mostrado que unificação pode ser realizada para todos os modos de predição intra que são especificados para um processo de PDPC.
[0257] Em outra modalidade, o processo de PDPC pode ser especificado como a seguir:
processo de filtragem de amostra de predição intra dependente posição entradas para este processo são: - o modo de predição intra predModeIntra, - uma variável nTbW especificando a largura de bloco de transformada, - uma variável nTbH especificando a altura de bloco de transformada, - uma variável refW especificando a largura de amostras de referência, - uma variável refH especificando a altura de amostras de referência, - as amostras preditas predSamples[ x ][ y ], com x =
0..nTbW - 1, y = 0..nTbH - 1, - as amostras vizinhas p[ x ][ y ], com x = -1, y = -
1..refH - 1 e x = 0..refW - 1, y = -1. As saídas deste processo são as amostras preditas modificadas predSamples[ x ][ y ] com x = 0..nTbW - 1, y =
0..nTbH - 1.
[0258] A variável nScale é derivada como a seguir: - Se predModeIntra for maior que INTRA_ANGULAR50, nScale é estabelecido igual a Min( 2, Log2( nTbH ) - Floor( Log2( 3 * invAngle - 2 ) ) + 8 ), usando invAngle tal como especificado na cláusula 8.4.5.2.12. - De outro modo, se predModeIntra for menor que INTRA_ANGULAR18, não igual a INTRA_PLANAR e não igual a INTRA_DC, nScale é estabelecido igual a Min( 2, Log2( nTbW ) - Floor( Log2( 3 * invAngle - 2 ) ) + 8 ), usando invAngle tal como especificado na cláusula 8.4.5.2.12.
- De outro modo, nScale é estabelecido para ( ( Log2( nTbW ) + Log2( nTbH ) - 2 ) >> 2 ).
[0259] Os conjuntos de amostras de referência mainRef[ x ] e sideRef[ y ] com x = 0..refW - 1 e y = 0..refH - 1 são derivados como a seguir: mainRef[ x ] = p[ x ][ -1 ] (8-229) sideRef[ y ] = p[ -1 ][ y ]
[0260] As variáveis refL[ x ][ y ], refT[ x ][ y ], wT[ y ] e wL[ x ] com x = 0..nTbW - 1, y = 0..nTbH - 1 são derivadas como a seguir: - Se predModeIntra for igual a INTRA_PLANAR ou INTRA_DC, o seguinte se aplica: refL[ x ][ y ] = p[ -1 ][ y ] (8-230) refT[ x ][ y ] = p[ x ][ -1 ] (8-231) wT[ y ] = 32 >> ( ( y << 1 ) >> nScale ) (8-232) wL[ x ] = 32 >> ( ( x << 1 ) >> nScale ) (8-233) - De outro modo, se predModeIntra for igual a INTRA_ANGULAR18 ou INTRA_ANGULAR50, o seguinte se aplica: refL[ x ][ y ] = p[ -1 ][ y ] - p[ -1 ][ -1 ] + predSamples[ x ][ y ] (8-234) refT[ x ][ y ] = p[ x ][ -1 ] - p[ -1 ][ -1 ] + predSamples[ x ][ y ] (8-235) wT[ y ] = ( predModeIntra = = INTRA_ANGULAR18 ) ? 32 >> ( ( y << 1 ) >> nScale ) : 0 (8-236) wL[ x ] = ( predModeIntra = = INTRA_ANGULAR50 ) ? 32 >> ( ( x << 1 ) >> nScale ) : 0 (8-237) - De outro modo, se predModeIntra for menor que INTRA_ANGULAR18 e nScale for igual ou maior que 0, as etapas ordenadas a seguir se aplicam:
3. As variáveis dXInt[ y ] e dX[ x ][ y ] são derivadas como a seguir usando invAngle tal como especificado na cláusula 8.4.5.2.12 dependendo de intraPredMode: dXInt[ y ] = ( ( y + 1 ) * invAngle + 256 ) >> 9 (8-238) dX[ x ][ y ] = x + dXInt[ y ]
4. As variáveis refL[ x ][ y ], refT[ x ][ y ], wT[ y ] e wL[ x ] são derivadas como a seguir: refL[ x ][ y ] = 0 (8-239) refT[ x ][ y ] = ( y < ( 3 << nScale ) ) ? mainRef[ dX[ x ][ y ] ] : 0 (8-240) wT[ y ] = 32 >> ( ( y << 1 ) >> nScale ) (8-241) wL[ x ] = 0 (8-242) - De outro modo, se predModeIntra for maior que INTRA_ANGULAR50 e nScale for igual ou maior que 0, as etapas ordenadas a seguir se aplicam:
3. As variáveis dYInt[ x ] e dY[ x ][ y ] são derivadas como a seguir usando invAngle tal como especificado na cláusula 8.4.5.2.12 dependendo de intraPredMode: dYInt[ x ] = ( ( x + 1 ) * invAngle + 256 ) >> 9 (8- 243) dY[ x ][ y ] = y + dYInt[ x ]
4. As variáveis refL[ x ][ y ], refT[ x ][ y ], wT[ y ] e wL[ x ] são derivadas como a seguir: refL[ x ][ y ] = ( x < ( 3 << nScale ) ) ? sideRef[ dY[ x ][ y ] ] : 0 (8-244) refT[ x ][ y ] = 0 (8-245) wT[ y ] = 0 (8-246) wL[ x ] = 32 >> ( ( x << 1 ) >> nScale ) (8-247) - De outro modo, refL[ x ][ y ], refT[ x ][ y ], wT[ y ] e wL[ x ] são todas estabelecidas iguais a 0.
[0261] Os valores das amostras preditas modificadas predSamples[ x ][ y ] com x = 0..nTbW - 1, y = 0..nTbH - 1 são derivados como a seguir: predSamples[ x ][ y ] = Clip1( ( refL[ x ][ y ] * wL[ x ] + refT[ x ][ y ] * wT[ y ] + ( 64 - wL[ x ] - wT[ y ] ) * predSamples[ x ][ y ] + 32 ) >> 6 ) (8-248)
[0262] No acima, a função Clip1 pode ser definida tal como descrita adicionalmente acima (Clip1Cmp), por exemplo.
[0263] Embora modalidades da revelação tenham sido descritas principalmente com base em codificação de vídeo, deve ser notado que modalidades do sistema de codificação 10, codificador 20 e do decodificador 30 (e correspondentemente do sistema 10) e as outras modalidades descritas neste documento também podem ser configuradas para processamento ou codificação de imagem estática, isto é, o processamento ou codificação de uma imagem individual independente de qualquer imagem precedente ou consecutiva tal como em codificação de vídeo. De uma maneira geral somente as unidades de predição inter 244 (codificador) e 344 (decodificador) podem não ser utilizáveis no caso em que a codificação de processamento de imagem é limitada a uma única imagem 17. Todas as outras funcionalidades (também referidas como ferramentas ou tecnologias) do codificador de vídeo 20 e do decodificador de vídeo 30 podem ser usadas igualmente para processamento de imagem estática, por exemplo, o cálculo de residual 204/304, a transformada 206, a quantização 208, a quantização inversa 210/310, a transformada (inversa) 212/312, o particionamento 262/362, a predição intra 254/354 e/ou a filtragem de laço 220, 320,
a codificação de entropia 270 e a decodificação de entropia
304.
[0264] As modalidades, por exemplo, do codificador 20 e do decodificador 30, e funções descritas neste documento, por exemplo, com referência para o codificador 20 e o decodificador 30, podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em um meio legível por computador ou transmitidas através de meio de comunicação como uma ou mais instruções ou códigos e executados por uma unidade de processamento baseada em hardware. O meio legível por computador pode incluir meio de armazenamento legível por computador, a qual corresponde a um meio tangível tal como meio de armazenamento de dados, ou meio de comunicação incluindo qualquer meio que facilite transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Neste modo, meio legível por computador de uma maneira geral pode corresponder a (1) meio tangível de armazenamento legível por computador que não é transitória ou (2) um meio de comunicação tal como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que possa ser acessada por um ou mais computadores ou por um ou mais processadores para recuperar instruções, códigos e/ou estruturas de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio legível por computador.
[0265] A título de exemplo e não de limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco ótico, armazenamento de disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser usado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é denominada de modo apropriado como um meio legível por computador. Por exemplo, se instruções forem transmitidas de um website, servidor ou de outra fonte remota usando um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL), ou tecnologias sem fio tais como infravermelho, rádio e micro-onda, então o cabo coaxial, cabo de fibras óticas, par trançado, DSL, ou tecnologias sem fio tais como infravermelho, rádio e micro- onda estão incluídos na definição de meio. Deve ser entendido, entretanto, que meios de armazenamento legíveis por computador e meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas em vez disso dizem respeito a meios tangíveis de armazenamento não transitório. Discos, tais como usados neste documento, incluem disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disco flexível e disco Blu-ray, onde alguns discos usualmente reproduzem dados magneticamente, enquanto que outros discos reproduzem dados oticamente com lasers. Combinações dos indicados acima também devem ser incluídas no escopo de meios legíveis por computador.
[0266] Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinais digitais (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs), ou outro conjunto de circuitos lógicos integrados ou distintos equivalentes. Portanto, o termo “processador”, tal como usado neste documento, pode se referir a qualquer estrutura indicada anteriormente ou a qualquer outra estrutura adequada para implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade descrita neste documento pode ser fornecida dentro de módulos de hardware e/ou de software dedicados configurados para codificação e decodificação, ou incorporada em um codec combinado. Além disso, as técnicas podem ser implementadas totalmente em um ou mais circuitos ou elementos lógicos. O conjunto de circuitos de processamento mencionado nesta revelação pode compreender hardware e software.
[0267] As técnicas desta revelação podem ser implementadas em uma grande variedade de dispositivos ou aparelhos, incluindo um aparelho de telefone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades estão descritos nesta revelação para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente realização por meio de unidades de hardware diferentes. Particularmente, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por meio de uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores tais como descritos acima, em combinação com software e/ou firmware adequado.
[0268] Modalidades adicionais são resumidas no exposto a seguir.
[0269] É fornecido um método de predição intra de um bloco de uma imagem, compreendendo para cada amostra de uma pluralidade de amostras do bloco: obter um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um de um modo de predição intra DC, um modo de predição intra PLANAR e um modo de predição intra angular; multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; somar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, resultando em um valor de amostra predita normalizada.
[0270] Em uma modalidade, a imagem é parte de uma sequência de vídeo.
[0271] Em uma modalidade, o fator de ponderação de amostra é ((2<<p)-wL-wT), em que p é uma precisão do fator de ponderação de amostra, wL é um fator de ponderação horizontal, e wT é um fator de ponderação vertical.
[0272] Em uma modalidade, o fator de ponderação horizontal é wL = (2<<(p-1)) >> ( ( x << 1 ) >> nScale ), em que x é uma coordenada horizontal da amostra, o fator de ponderação vertical é wT = (2<<(p-1)) >> ( ( y << 1 ) >> nScale ), em que y é uma coordenada vertical da amostra, e nScale é um parâmetro de escala.
[0273] Em uma modalidade, o parâmetro de escala nScale é derivado de um tamanho do bloco.
[0274] Em uma modalidade, o parâmetro de escala nScale é determinado como ( ( Log2( nTbW ) + Log2( nTbH ) - 2 ) >> 2 ) onde nTbW é uma largura do bloco e nTbH é uma altura do bloco.
[0275] Em uma modalidade, o valor de amostra predita normalizada é computado do valor de amostra predita como 𝑃̂(𝑥, 𝑦) = (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 + (64 − 𝑤𝐿 − 𝑤𝑇) × 𝑃(𝑥, 𝑦) + 32)) ≫ 6 onde 𝑃̂(𝑥, 𝑦) é o valor de amostra predita normalizada, P(x,y)é o valor de amostra predita, Rx,-1, R-1,y representam os valores das amostras de referência mais próximas localizadas acima e à esquerda da amostra predita, wL é um fator de ponderação horizontal, e wT é um fator de ponderação vertical.
[0276] Em uma modalidade, o fator de ponderação horizontal é wL = (2<<(p-1)) >> ( ( x << 1 ) >> nScale ), em que x é uma coordenada horizontal da amostra, o fator de ponderação vertical é wT = (2<<(p-1)) >> ( ( y << 1 ) >> nScale ), em que y é uma coordenada vertical da amostra, e nScale é um parâmetro de escala.
[0277] Em uma modalidade, o parâmetro de escala nScale é derivado de um tamanho do bloco.
[0278] Em uma modalidade, o parâmetro de escala nScale é determinado como ( ( Log2( nTbW ) + Log2( nTbH ) - 2 ) >> 2 ) onde nTbW é uma largura do bloco e nTbH é uma altura do bloco.
[0279] Em uma modalidade, a pluralidade de amostras do bloco compreende cada amostra do bloco.
[0280] É fornecido adicionalmente um dispositivo para codificar ou decodificar uma imagem, compreendendo conjunto de circuitos de processamento configurado para realizar qualquer um dos métodos indicados anteriormente.
[0281] Em uma modalidade, o conjunto de circuitos de processamento compreende um ou mais processadores e um meio não transitório legível por computador conectado ao um ou mais processadores, em que o meio não transitório legível por computador carrega um código de programa que, quando executado pelo um ou mais processadores, induz o dispositivo para realizar o método.
[0282] É fornecido adicionalmente um meio não transitório legível por computador carregando um código de programa que, quando executado por um dispositivo de computador, induz o dispositivo de computador para realizar qualquer um dos métodos indicados anteriormente. Definições de Acrônimos & Glossário JEM - Modelo de Exploração Conjunta (a base de códigos de software para exploração de codificação de vídeo futura) JVET - Equipe Conjunta de Especialistas em Vídeo LUT - Tabela de Pesquisa PDPC - Combinação de predição dependente de posição PPS - Conjunto de parâmetros de imagem QT - Árvore Quaternária QTBT - Árvore Quaternária mais Árvore Binária RDO - Otimização de Distorção de Taxa ROM - Memória Somente de Leitura
SPS - Conjunto de parâmetros de sequência VTM - Modelo de Teste de VVC VVC - Codificação de Vídeo Versátil, o projeto de padronização desenvolvido por JVET.
CTU / CTB - Unidade de Árvore de Codificação / Bloco de Árvore de Codificação CU / CB - Unidade de Codificação / Bloco de Codificação PU / PB - Unidade de Predição / Bloco de Predição TU/TB - Unidade de Transformada / Bloco de Transformada HEVC - Codificação de Vídeo de Alta Eficiência

Claims (20)

REIVINDICAÇÕES EMENDADAS
1. Método de predição intra de um bloco de uma imagem, caracterizado pelo fato de que compreende para uma amostra do bloco: obter (S100) um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra DC; multiplicar (S110) o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; adicionar (S120) um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e normalizar (S130) o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é 2≪ − − , em que é um parâmetro do fator de ponderação de amostra, é um fator de ponderação horizontal, e é um fator de ponderação vertical.
2. Método de predição intra de um primeiro bloco e de um segundo bloco de uma imagem, caracterizado pelo fato de que compreende para uma amostra do primeiro bloco e para uma amostra do segundo bloco: obter (S100) um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra; multiplicar (S110) o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; adicionar (S120) um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e normalizar (S130) o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é 2≪ − − , é um parâmetro do fator de ponderação de amostra, é um fator de ponderação horizontal, e é um fator de ponderação vertical, em que o modo de predição intra usado para obter o valor de amostra predita para o primeiro bloco é um modo de predição intra DC, e o modo de predição intra usado para obter o valor de amostra predita para o segundo bloco é um modo de predição intra PLANAR.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que: um mecanismo de predição intra PLANAR é usado para calcular o valor adicional.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que o fator de ponderação de amostra é 64 − − .
5. Método, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o valor adicional é uma soma de uma ou mais parcelas, incluindo uma parcela dependendo de uma ou mais das amostras de referência.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que a parcela dependendo de uma ou mais amostras de referência é × , + × , , e , e , representam valores das amostras de referência mais próximas localizadas acima e à esquerda da amostra predita.
7. Método, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que o fator de ponderação horizontal e/ou o fator de ponderação vertical é uma potência de dois.
8. Método, de acordo com qualquer uma das reivindicações 1 a 7, caracterizado pelo fato de que: o fator de ponderação horizontal é = 2≪ −1 ≫ ≪1 ≫ , em que é uma coordenada horizontal da amostra, o fator de ponderação vertical é = 2≪ −1 ≫ ≪1 ≫ , em que é uma coordenada vertical da amostra, e é um parâmetro de escala.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o parâmetro de escala é derivado de um tamanho do bloco.
10. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o parâmetro de escala nScale é determinado como Log2 !" + Log2 !# − 2 ≫ 2 onde nTbW é uma largura do bloco e nTbH é uma altura do bloco.
11. Método, de acordo com qualquer uma das reivindicações 1 a 10, caracterizado pelo fato de que um valor de amostra predita normalizada é computado do valor de amostra predita, incluindo calcular × , + × , + 64 − − ×$ , + 32 ≫ 6 onde $ , é o valor de amostra predita, , , , representam valores das amostras de referência mais próximas localizadas acima e à esquerda da amostra predita, é o fator de ponderação horizontal, e é o fator de ponderação vertical.
12. Método de codificar ou decodificar uma imagem, caracterizado pelo fato de que compreende: obter valores de amostras preditas normalizadas ao realizar as etapas de um método conforme definido em qualquer uma das reivindicações 1 a 11; e adicionar valores residuais aos valores de amostras preditas normalizadas resultando em valores de amostras reconstruídas.
13. Dispositivo para codificar ou decodificar uma imagem, caracterizado pelo fato de que compreende conjunto de circuitos de processamento (1040) configurado para realizar o método conforme definido em qualquer uma das reivindicações 1 a 12.
14. Dispositivo, de acordo com a reivindicação 13, caracterizado pelo fato de que o conjunto de circuitos de processamento (1040) compreende um ou mais processadores (1050) e um meio não transitório legível por computador (1060) conectado ao um ou mais processadores (1050), em que o meio não transitório legível por computador (1060) carrega instruções que, quando executadas pelo um ou mais processadores (1050), induz o dispositivo para realizar o método conforme definido em qualquer uma das reivindicações 1 a 13.
15. Meio não transitório legível por computador, caracterizado pelo fato de que carrega instruções que, quando executadas por um dispositivo de computador, induz o dispositivo de computador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 12.
16. Dispositivo preditor para predição intra de um bloco de uma imagem, caracterizado pelo fato de que compreende: um obtentor configurado para obter, para uma amostra do bloco, um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra DC; um multiplicador configurado para multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; um somador configurado para adicionar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e um normalizador configurado para normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é 2≪ − − , em que é um parâmetro do fator de ponderação de amostra, é um fator de ponderação horizontal, e é um fator de ponderação vertical.
17. Dispositivo preditor para predição intra de um primeiro bloco e de um segundo bloco de uma imagem, caracterizado pelo fato de que compreende:
um obtentor configurado para obter, para uma amostra do primeiro bloco ou do segundo bloco, um valor de amostra predita de um ou mais valores de amostras de referência por meio de predição intra usando um modo de predição intra; um multiplicador configurado para multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderada; um somador configurado para adicionar um valor adicional ao valor de amostra predita ponderada, resultando em um valor de amostra predita não normalizada; e um normalizador configurado para normalizar o valor de amostra predita não normalizada por meio de um deslocamento aritmético para a direita de uma representação inteira do valor de amostra predita não normalizada, em que o fator de ponderação de amostra é 2≪ − − , é um parâmetro do fator de ponderação de amostra, é um fator de ponderação horizontal, e é um fator de ponderação vertical, em que o modo de predição intra usado para obter o valor de amostra predita para o primeiro bloco é um modo de predição intra DC, e o modo de predição intra usado para obter o valor de amostra predita para o segundo bloco é um modo de predição intra PLANAR.
18. Método de codificar uma imagem, caracterizado pelo fato de que compreende: obter valores de amostras preditas normalizadas ao realizar as etapas de um método conforme definido em qualquer uma das reivindicações 1 a 11; e gerar valores residuais ao deduzir valores de amostras originais dos valores de amostras preditas normalizadas resultando em valores de amostras reconstruídas; e codificar os valores residuais gerados em um fluxo de bits.
19. Meio não transitório legível por computador, caracterizado pelo fato de que armazena fluxo de bits codificado pelo método conforme definido na reivindicação
18.
20. Fluxo de bits, caracterizado pelo fato de que o fluxo de bits é codificado pelo método conforme definido na reivindicação 18.
BR112021010123-3A 2018-11-26 2019-11-26 Método de predição intra de um bloco de uma imagem BR112021010123A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862771451P 2018-11-26 2018-11-26
US62/771,451 2018-11-26
PCT/RU2019/050227 WO2020111982A1 (en) 2018-11-26 2019-11-26 Method of intra predicting a block of a picture

Publications (1)

Publication Number Publication Date
BR112021010123A2 true BR112021010123A2 (pt) 2021-08-24

Family

ID=70853105

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021010123-3A BR112021010123A2 (pt) 2018-11-26 2019-11-26 Método de predição intra de um bloco de uma imagem

Country Status (11)

Country Link
US (2) US11553174B2 (pt)
EP (2) EP3874747A4 (pt)
JP (2) JP7401542B2 (pt)
KR (1) KR102661224B1 (pt)
CN (4) CN115695784A (pt)
AU (1) AU2019390215B2 (pt)
BR (1) BR112021010123A2 (pt)
CA (1) CA3121219A1 (pt)
MX (1) MX2021006089A (pt)
SG (1) SG11202105452VA (pt)
WO (1) WO2020111982A1 (pt)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220046244A1 (en) * 2018-10-01 2022-02-10 Interdigital Vc Holdings, Inc. Directions for wide angle intra prediction
KR20210099017A (ko) * 2018-12-07 2021-08-11 인터디지털 브이씨 홀딩스 인코포레이티드 코딩 도구 조합 및 제한의 관리
JP2022537173A (ja) * 2019-06-20 2022-08-24 インターデジタル ブイシー ホールディングス フランス,エスアーエス 位置依存イントラ予測コンビネーションを用いたピクチャ符号化及び復号の方法及びデバイス
US12010301B2 (en) * 2019-06-24 2024-06-11 Shar Kabushiki Kaisha Systems and methods for performing intra prediction coding in video coding
KR20220024142A (ko) * 2019-06-24 2022-03-03 인터디지털 브이씨 홀딩스 인코포레이티드 하이 레벨 구문 요소들을 이용하여 디코딩 데이터를 시그널링하기 위한 방법 및 장치
US20220103825A1 (en) * 2020-09-30 2022-03-31 Qualcomm Incorporated Constraining operational bit depth of adaptive loop filtering for coding of video data at different bit depth

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5158003B2 (ja) * 2009-04-14 2013-03-06 ソニー株式会社 画像符号化装置と画像符号化方法およびコンピュータ・プログラム
EP3125555B1 (en) * 2010-08-17 2018-04-18 M&K Holdings Inc. Method for encoding an intra prediction mode
MX337948B (es) * 2010-12-21 2016-03-29 Ntt Docomo Inc Codificacion de intra-prediccion mejorada utilizando presentaciones planas.
WO2017035831A1 (en) * 2015-09-06 2017-03-09 Mediatek Inc. Adaptive inter prediction
US10425648B2 (en) * 2015-09-29 2019-09-24 Qualcomm Incorporated Video intra-prediction using position-dependent prediction combination for video coding
WO2017134992A1 (ja) 2016-02-03 2017-08-10 シャープ株式会社 予測画像生成装置、動画像復号装置および動画像符号化装置
KR101899101B1 (ko) * 2016-06-01 2018-09-14 서울대학교 산학협력단 인공 신경망 기반 예측 모델 생성 장치 및 방법
CN107071417B (zh) * 2017-04-10 2019-07-02 电子科技大学 一种用于视频编码的帧内预测方法
US10638126B2 (en) 2017-05-05 2020-04-28 Qualcomm Incorporated Intra reference filter for video coding
US10965941B2 (en) * 2017-10-09 2021-03-30 Qualcomm Incorporated Position-dependent prediction combinations in video coding
US11611757B2 (en) * 2018-04-02 2023-03-21 Qualcomm Incorproated Position dependent intra prediction combination extended with angular modes
US10911765B2 (en) * 2018-08-01 2021-02-02 Tencent America LLC Method and apparatus for video coding
US11516507B2 (en) * 2018-10-12 2022-11-29 Intellectual Discovery Co., Ltd. Image encoding/decoding methods and apparatuses
JP7182705B2 (ja) 2018-11-08 2022-12-02 オッポ広東移動通信有限公司 ビデオ信号の符号化/復号化方法及び前記方法のための装置
US11652984B2 (en) * 2018-11-16 2023-05-16 Qualcomm Incorporated Position-dependent intra-inter prediction combination in video coding

Also Published As

Publication number Publication date
CN112889281A (zh) 2021-06-01
KR20210090700A (ko) 2021-07-20
EP3874747A1 (en) 2021-09-08
WO2020111982A1 (en) 2020-06-04
SG11202105452VA (en) 2021-06-29
MX2021006089A (es) 2021-09-10
CN115695783A (zh) 2023-02-03
AU2019390215A1 (en) 2021-06-17
JP7401542B2 (ja) 2023-12-19
EP3874747A4 (en) 2021-12-29
JP2024019425A (ja) 2024-02-09
KR102661224B1 (ko) 2024-04-26
AU2019390215B2 (en) 2023-04-06
US11553174B2 (en) 2023-01-10
EP4358511A1 (en) 2024-04-24
JP2022507985A (ja) 2022-01-18
CN116132667A (zh) 2023-05-16
CA3121219A1 (en) 2020-06-04
CN112889281B (zh) 2022-11-18
US20210281835A1 (en) 2021-09-09
US20230107125A1 (en) 2023-04-06
CN115695784A (zh) 2023-02-03

Similar Documents

Publication Publication Date Title
BR112021010123A2 (pt) Método de predição intra de um bloco de uma imagem
US11589055B2 (en) Method and apparatus of mode- and size-dependent block-level restrictions for position dependent prediction combination
BR112021013163A2 (pt) Método e aparelho de predição de bloco de croma
BR112021003999A2 (pt) relação entre elementos de restrição de partição
AU2019401170B2 (en) Method and apparatus of mode- and size-dependent block-level restrictions
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
BR112021012949A2 (pt) Aparelho, método de predição intra de bloco de imagem, dispositivo para codificar ou decodificar imagem e gravação não transitória
BR112021009911A2 (pt) codificador, decodificador e métodos correspondentes usando armazenamento de mv compacto
BR112021002210A2 (pt) aparelho e método para realizar desblocagem
BR112021013565A2 (pt) Codificador, decodificador, meio legível por computador não transitório e método de codificação de vídeo de um bloco de uma imagem
BR112021007509A2 (pt) lista de mesclagem separada para candidatos de mesclagem de sub-bloco e harmonização de técnicas intra-inter para codificação de vídeo
BR112021009099A2 (pt) codificador de vídeo, decodificador de vídeo e métodos de codificação ou decodificação de uma imagem
BR112021003946A2 (pt) codificador de vídeo, decodificador de vídeo e métodos correspondentes
US11838508B2 (en) Apparatus and method for chrominance quantization parameter derivation
US11438629B2 (en) Method and apparatus for hierarchical signaling of enabling and disabling prediction mechanisms for video coding
EP3868098B1 (en) Method and apparatus of local illumination compensation for predictive coding