BR112020018410A2 - Método e aparelho para filtragem de imagem com coeficientes multiplicadores adaptivos - Google Patents

Método e aparelho para filtragem de imagem com coeficientes multiplicadores adaptivos Download PDF

Info

Publication number
BR112020018410A2
BR112020018410A2 BR112020018410-1A BR112020018410A BR112020018410A2 BR 112020018410 A2 BR112020018410 A2 BR 112020018410A2 BR 112020018410 A BR112020018410 A BR 112020018410A BR 112020018410 A2 BR112020018410 A2 BR 112020018410A2
Authority
BR
Brazil
Prior art keywords
filter
image
coefficients
multiplier
values
Prior art date
Application number
BR112020018410-1A
Other languages
English (en)
Inventor
Semih ESENLIK
Anand Meher KOTRA
Zhijie ZHAO
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 BR112020018410A2 publication Critical patent/BR112020018410A2/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/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/146Data rate or code amount at the encoder output
    • 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/1887Methods 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 variable length codeword
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

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

Abstract

um aparelho e um método para filtrar imagens reconstruídas, em particular, imagens de vídeo, com filtros multiplicativos adaptativos. a eficiência da operação de filtragem é aumentada restringindo os valores permitidos dos coeficientes do filtro àqueles que têm apenas um número limitado de uns na representação binária.

Description

MÉTODO E APARELHO PARA FILTRAGEM DE IMAGEM COM COEFICIENTES MULTIPLICADORES ADAPTIVOS CAMPO TÉCNICO
[001] As modalidades da invenção referem-se ao campo do processamento de imagem, por exemplo, codificação de imagem de vídeo e/ou imagem estática. Novos métodos e aparelhos para filtragem de imagem com um filtro tendo coeficientes de filtro multiplicadores adaptativos são fornecidos.
FUNDAMENTOS
[002] A codificação de vídeo (codificação e decodificação de vídeo) é usada em uma ampla gama de aplicações de vídeo digital, por exemplo, difusão de TV digital, transmissão de vídeo pela Internet e redes móveis, aplicações de conversação em tempo real, como bate-papo de vídeo, videoconferência, discos DVD e Blu-ray, aquisição de conteúdo de vídeo e sistemas de edição, e câmeras de vídeo de aplicações de segurança.
[003] Desde o desenvolvimento da abordagem de codificação de vídeo híbrida baseada em bloco no padrão H.261 em 1990, novas técnicas e ferramentas de codificação de vídeo foram desenvolvidas e formaram a base para novos padrões de codificação de vídeo. Um dos objetivos da maioria dos padrões de codificação de vídeo era atingir uma redução de taxa de bits em comparação com seu antecessor sem sacrificar a qualidade da imagem. Outros padrões de codificação de vídeo incluem vídeo MPEG-1, vídeo MPEG-2, ITU-T H.262/MPEG-2, ITU- T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de vídeo avançada (Advanced Video Coding, AVC), ITU-T H.265, codificação de vídeo de alta eficiência (High Efficiency Video Coding, HEVC), e extensões, por exemplo,
escalabilidade e/ou extensões tridimensionais (tridimensionais, 3D), desses padrões.
[004] Um diagrama de blocos esquemático ilustrando uma modalidade de um sistema de codificação 300 é dado na Figura 1, que será descrito em mais detalhes abaixo.
[005] A Figura 2 é um diagrama de blocos mostrando um exemplo de estrutura de um codificador de vídeo, no qual a invenção pode ser implementada e que também será descrito em mais detalhes abaixo.
[006] Em particular, o codificador ilustrado 100 inclui um "filtro de malha" 120, em que a operação de filtragem de acordo com a invenção pode ser aplicada. No entanto, de forma mais geral, a operação de filtragem é aplicável em outros locais do codec, por exemplo, em um filtro de interpolação. Ainda mais genericamente, a invenção se aplica não apenas ao vídeo, mas também à codificação de imagem estática.
[007] A Figura 3 é um diagrama de blocos mostrando um exemplo de estrutura de um decodificador de vídeo, no qual a invenção pode ser implementada e que também será descrito em mais detalhes abaixo. Especificamente, a invenção é aplicável, por exemplo, no filtro de malha 220.
[008] A seguir, algumas informações de fundamentos sobre a filtragem adaptativa serão resumidas.
[009] A filtragem adaptativa para a codificação de vídeo serve para minimizar o erro quadrático médio entre as amostras originais e decodificadas usando um filtro adaptativo baseado em Wiener. Em particular, o Filtro de Malha Adaptativo (Adaptive Loop Filter, ALF) proposto está localizado no último estágio de processamento de cada imagem e pode ser considerado uma ferramenta para capturar e corrigir artefatos de estágios anteriores. Os coeficientes de filtro adequados são determinados pelo codificador e explicitamente sinalizados para o decodificador.
[0010] Informações gerais sobre a filtragem adaptativa podem ser encontradas no artigo "Adaptive Loop Filtering for Video Coding", de Chia-Yang Tsai, Ching-Yeh Chen, Tomoo Yamakage, In Suk Chong, Yu-Wen Huang, Chih-Ming Fu, Takayuki Itoh, Takashi Watanabe, Takeshi Chujoh, Marta Karczewicz e Shaw-Min Lei, publicado em: IEEE Journal of Selected Topics in Signal Processing (Volume: 7, Edição: 6, dezembro de 2013).
[0011] A descrição dada no documento acima descreve uma implementação específica da operação de filtragem com coeficientes de filtro adaptativos. Os princípios gerais da operação podem ser descritos a seguir.
[0012] Geralmente, a equação de filtragem lê: / / R′(i, j) = f(k, l) × R(i + k, j + l) / /
[0013] Aqui, R (i, j) é uma amostra em um quadro de imagem antes de filtrar na coordenada (i, j).
[0014] R’ (i, j) é uma amostra em um quadro de imagem após a filtragem. f (k, l) são os coeficientes de filtro.
[0015] Um exemplo de núcleo de filtro está representado na Figura 4. Neste exemplo, C20 é a coordenada central do núcleo de filtro (k = 0, l = 0) e L é igual a 8.
[0016] No exemplo, o núcleo de filtro é simétrico em torno do centro. Isso pode não ser geralmente verdade.
[0017] No caso de usar aritmética inteira, a equação de filtragem pode ser escrita como:
⎛ ⎞ R (i, j) = ⎜⎛ f(k, l) × R(i + k, j + l) ⎞ + offset⎟ ≫ N ⎝ ⎠ ⎝ ⎠
[0018] Aqui, N é um número de um desvio de bit da saída, ou seja, a saída é dividida por um fator de normalização. Em particular, N pode ser predefinido. O “deslocamento” é um escalar para compensar a perda na aritmética de inteiros. No caso de um desvio de bit por N, o deslocamento pode ser 2(N-1). Na equação acima, os coeficientes de filtragem f (k, l) só podem ter valores que são inteiros e não números fracionários. A implementação da equação de filtragem de acordo com a aritmética de inteiros é importante para garantir implementações precisas no hardware. A operação de desvio à direita “>> N” tem o efeito de divisão por 2N seguido por uma operação de arredondamento para baixo.
[0019] Normalmente (mas não necessariamente), a seguinte equação é verdadeira se nenhuma mudança no nível de iluminação médio for desejada.
2 = f(k, l)
[0020] No codificador, os coeficientes do filtro são estimados minimizando o valor esperado do erro entre o pixel original e o filtrado: ⎛ ⎞ E ⎜⎛O(i, j) − f(k, l) × R(i + k, j + l)⎞ ⎟ ⎝ ⎠ ⎝ ⎠
[0021] Na equação acima, O (i, j) denota a amostra da imagem original.
[0022] A Figura 5 mostra algumas formas típicas de filtro exemplares para filtros adaptativos. O desenho à esquerda mostra um filtro de diamante 5 × 5 (filtro de 13 derivações com 7 coeficientes únicos), o desenho do meio - um filtro de diamante 7 × 7 (filtro de 25 derivações com 13 coeficientes únicos) e o desenho à direita - um filtro de diamante 9 × 9 (filtro de 41 derivações com 21 coeficientes únicos).
[0023] O termo filtragem "adaptativa" se refere ao fato de que o processo de filtragem pode ser ajustado pelo codificador. Isso diz respeito, por exemplo, à forma do filtro, ao tamanho do filtro, ao número de coeficientes de filtragem e aos valores dos coeficientes de filtragem. Esses dados, também conhecidos como “dicas de filtro”, são sinalizados para o decodificador.
[0024] A filtragem adaptativa implica no seguinte problema, quando aplicada a realizações de filtragem que incluem multiplicação, isto é, em que os coeficientes de filtro são chamados coeficientes multiplicativos ou multiplicadores. Por outras palavras, o seguinte problema que a invenção pretende resolver refere-se à filtragem com coeficientes de filtro adaptativos, em que os coeficientes de filtro que são usados na operação de multiplicação podem ser individualmente adaptados (modificados). Neste contexto, significa individualmente para cada imagem (imagem, quadro) e/ou para cada pixel e/ou cada coeficiente.
[0025] O problema é que a implementação da operação de multiplicação é cara, especialmente em implementações de hardware dedicado. A aplicação do filtro requer um número comparativamente grande de multiplicação de operações de filtragem (por exemplo, 41 multiplicações por pixel no caso de um filtro em forma de diamante 9 × 9, como mostrado na Figura 4).
[0026] Isso é ilustrado com mais detalhes abaixo.
[0027] Suponha que queiramos multiplicar dois inteiros não sinalizados de oito bits. O coeficiente do filtro é C e o pixel de amostra A.
[0028] O processo de multiplicação pode ser decomposto em 8 multiplicações de um bit, cada uma das quais pode ser implementada como uma operação de desvio de bit em aritmética binária, e 7 operações de adição, conforme mostrado abaixo. Portanto, aproximadamente 1 multiplicação é equivalente a 7 adições.
[0029] O problema é que o processo de multiplicação requer uma grande quantidade de computação. Por isso, é caro implementar em hardware dedicado. C[0]A[7] C[0]A[6] C[0]A[5] C[0]A[4] C[0]A[3] C[0]A[2] C[0]A[1] C[0]A[0] + C[1]A[7] C[1]A[6] C[1]A[5] C[1]A[4] C[1]A[3] C[1]A[2] C[1]A[1] C[1]A[0] 0 + C[2]A[7] C[2]A[6] C[2]A[5] C[2]A[4] C[2]A[3] C[2]A[2] C[2]A[1] C[2]A[0] 0 0 + C[3]A[7] C[3]A[6] C[3]A[5] C[3]A[4] C[3]A[3] C[3]A[2] C[3]A[1] C[3]A[0] 0 0 0 … … … + C[7]A[7] C[7]A[6] C[7]A[5] C[7]A[4] C[7]A[3] C[7]A[2] C[7]A[1] C[7]A[0] 0 0 0 0 0 0 0 P[15] P[14] P[13] P[12] P[11] P[10] P[9] P[8] P[7] P[6] P[5] P[4] P[3] P[2] P[1] P[0]
[0030] Aqui, o coeficiente de filtro não sinalizado de 8 bits C é mostrado em representação binária, onde C [0] é o bit menos significativo do coeficiente C e C [7] é o bit mais significativo. Da mesma forma, A [7], A [6],... A [0] são os bits correspondentes do bit mais significativo ao bit menos significativo em ordem. A operação P = C * A em aritmética binária é demonstrada e o resultado é mostrado na linha mais baixa.
[0031] No exemplo da Figura 4, o núcleo de filtro inclui 41 derivações de filtro, o que significa que, para processar uma amostra de pixel, são necessárias 41 operações de multiplicação.
[0032] Salienta-se que a invenção e o problema acima descrito que ela resolve estão especificamente relacionados à filtragem adaptativa com coeficientes de filtro multiplicadores. O problema não se aplica aos filtros fixos e, em particular, às operações de filtragem que empregam múltiplos filtros fixos.
[0033] Um exemplo para o emprego de múltiplos filtros fixos é a filtragem de interpolação, para interpolação em posições de pixel fracionárias na interpredição, que é ilustrada na Figura 6.
[0034] Muitos codecs conhecidos empregam filtragem de interpolação usando filtros de interpolação fixos. Embora os coeficientes de filtro sejam fixos para um filtro, existem múltiplos filtros para diferentes posições fracionárias (posições de meio pixel e quarto de pixel no desenho). No exemplo, todo o conjunto de filtros é adaptado com base no vetor de movimento, mas os coeficientes do filtro não são adaptados individualmente.
[0035] Na figura, os círculos grandes correspondem às posições reais da amostra em uma imagem, e os círculos menores são as posições fracionárias que são geradas pela aplicação da operação de filtragem de interpolação. No exemplo específico, existem 3 posições fracionárias (um quarto de pel esquerdo, meio pel e um quarto de pel direito) entre duas posições reais de amostra de imagem. No lado esquerdo do desenho, um filtro de interpolação aplicado para interpolação de posições de meio pixel (half-pel) é mostrado. O lado direito do desenho ilustra um filtro de interpolação a ser usado para posições de quarto de pixel (quarter-pel). Embora esses filtros sejam diferentes uns dos outros, cada filtro de interpolação é um filtro fixo. Conforme indicado, o exemplo da Figura 6 foi fornecido apenas para fins ilustrativos e não faz parte da invenção.
[0036] A invenção visa fornecer um conceito melhorado de filtragem adaptativa multiplicativa, que pode simplificar a operação de multiplicação e reduzir o esforço da operação de multiplicação.
SUMÁRIO
[0037] As modalidades da invenção são definidas pelos recursos das reivindicações independentes e outras implementações vantajosas das modalidades pelos recursos das reivindicações dependentes.
[0038] De acordo com um primeiro aspecto da invenção, um aparelho para filtrar um conjunto de amostras de uma imagem usando um filtro com coeficientes multiplicadores adaptativos representados por números inteiros é fornecido. O aparelho compreende circuitos de processamento que são configurados para determinar o valor de pelo menos um coeficiente multiplicador do filtro de modo a estar dentro de um conjunto de valores permitidos de modo que a representação binária do valor absoluto de pelo menos um coeficiente multiplicador com um predeterminado o número L de dígitos inclui pelo menos um “zero”, e para filtrar o conjunto de amostras de uma imagem com o filtro.
[0039] De acordo com um segundo aspecto da invenção, é fornecido um método para filtrar um conjunto de amostras de uma imagem usando um filtro com coeficientes multiplicadores adaptativos representados por números inteiros. O método compreende o passo de determinar o valor de pelo menos um coeficiente multiplicador do filtro de modo a estar dentro de um conjunto de valores permitidos de modo que a representação binária do valor absoluto de pelo menos um coeficiente multiplicador com um número L predeterminado de dígitos inclui pelo menos um “zero” e o passo de filtrar o conjunto de amostras de uma imagem com o filtro.
[0040] De acordo com a presente divulgação, um conjunto de amostras de uma imagem pode, por exemplo, ser uma amostra de um sinal de vídeo ou um sinal de imagem estática. Os circuitos de processamento podem ser implementados por qualquer combinação de software e/ou hardware. O conjunto de valores permitidos pode, em particular, ser um conjunto predeterminado de valores permitidos. Geralmente, a invenção também é aplicável a outros conjuntos de amostras de sinal além de imagens, por exemplo, sinais incluindo dados de áudio.
[0041] É a abordagem particular da invenção restringir os valores que podem ser assumidos pelos coeficientes de filtro de um filtro de multiplicação adaptativa de tal forma que a operação de multiplicação seja simplificada. Especificamente, os valores permitidos dos coeficientes de filtro são restritos de modo que dentro de um número predeterminado de dígitos binários para expressar os valores absolutos, apenas um número limitado de "uns" é permitido. Isso permite a simplificação das operações de multiplicação para filtragem e, portanto, torna a operação de filtragem mais eficiente.
[0042] Como será mostrado abaixo, quanto menor o número de “uns” permitidos em um número geral predeterminado de dígitos binários, melhor será o ganho de eficiência na execução da operação de filtragem. Por exemplo, o melhor ganho de eficiência pode ser alcançado se qualquer valor que pode ser assumido pelos valores dos coeficientes incluir apenas até um único “1”, ou seja, no máximo um “1”.
[0043] De acordo com as modalidades, o valor absoluto mais alto do conjunto de valores permitidos é restrito a um valor máximo predeterminado Nmax.
[0044] De acordo com as modalidades, a representação binária do valor absoluto do pelo menos um coeficiente multiplicador inclui no máximo dois "uns". Mais especificamente, a representação binária do valor absoluto do pelo menos um coeficiente multiplicador inclui no máximo um "um". Conforme indicado acima, e como será descrito em detalhes abaixo, a simplificação em realizar a operação de multiplicação para filtragem, e, portanto, o ganho e a eficiência de processamento são maiores quanto mais zeros (portanto: menos uns) houver na representação binária dos valores de coeficiente permitidos. Assim, o caso mais eficiente é quando há apenas um “um”, enquanto, por exemplo, dois “uns” permitidos ainda fornecem um bom resultado. Claro, o que é benéfico depende muito dos detalhes da situação e, em particular, para filtros grandes, também ter três ou mais “uns” pode ainda ser benéfico.
[0045] Geralmente, o conjunto de valores permitidos é aplicável a pelo menos um coeficiente multiplicador do filtro.
[0046] De acordo com as modalidades, o conjunto de valores permitidos é aplicado a todos os coeficientes multiplicadores do filtro.
[0047] De acordo com modalidades alternativas, os coeficientes multiplicadores são ainda agrupados em pelo menos dois grupos e os coeficientes multiplicadores de um dos grupos são restritos ao conjunto de valores permitidos. Os coeficientes multiplicadores no outro grupo ou grupos podem, por exemplo, assumir todos os valores dentro de um intervalo predeterminado, ou podem ser restritos de acordo com outras regras predeterminadas. Mais especificamente, os coeficientes multiplicadores de outro dos grupos podem, por exemplo, assumir todos os valores dentro de um intervalo definido por um máximo predeterminado do valor absoluto.
[0048] De acordo com as modalidades, um conjunto de amostras de uma imagem significa um conjunto de amostras de uma imagem de vídeo. Mais especificamente, o aparelho pode ser configurado para adaptar individualmente os coeficientes multiplicadores para cada imagem e cada pixel.
[0049] De acordo com outro aspecto particular da invenção, é fornecido um aparelho para codificar um conjunto atual de amostras de uma imagem incluindo uma pluralidade de pixels. O aparelho compreende um codificador com um decodificador para reconstruir o conjunto atual e um aparelho de acordo com o primeiro aspecto da invenção para filtrar o conjunto reconstruído.
[0050] De acordo com as modalidades, o referido aparelho de codificação compreende ainda circuitos de processamento que são configurados para mapear os valores dos coeficientes multiplicadores para palavras de código binárias e para incluir as palavras de código em um fluxo de bits para ser transmitido para um aparelho de decodificação.
[0051] Mais especificamente, o comprimento das palavras de código depende do número de valores de coeficiente multiplicador distintos. Em outras palavras, há tantas palavras de código quanto possíveis valores de coeficiente de filtro. A palavra de código para mapeamento de valor (que é um mapeamento um-para-um) pode ser um mapeamento fixo, ou pode mudar dependendo das informações secundárias sinalizadas.
[0052] De acordo com as modalidades, os circuitos de processamento são ainda configurados para realizar uma predição dos coeficientes multiplicadores do filtro e para determinar os coeficientes multiplicadores residuais comparando os valores realmente determinados com os valores preditos resultantes da predição. O mapeamento para palavras de código binárias é então aplicado aos coeficientes multiplicadores residuais. Neste caso, as informações de controle de predição podem ser ainda incluídas no fluxo de bits de modo que um aparelho de decodificação que recebe o fluxo de bits esteja ciente do método de predição aplicado e possa reconstruir os coeficientes multiplicadores do filtro a partir dos coeficientes multiplicadores residuais codificados. Alternativamente, o método de predição aplicado pode ser predefinido, portanto, aplicado da mesma maneira no codificador e no decodificador sem quaisquer informações secundárias transmitidas. Métodos de predição possíveis podem incluir, mas não estão limitados a predição usando preditores de filtro predefinidos e predição a partir de coeficientes de filtro previamente sinalizados. Como os valores dos coeficientes de filtro residuais, expressando a diferença entre um coeficiente de filtro real e o respectivo coeficiente de filtro predito, são geralmente menores em valor absoluto que os coeficientes reais, a quantidade e, portanto, o tamanho das palavras de código pode ser menor, o que reduz adicionalmente informações a serem sinalizadas ao decodificador.
[0053] Alternativamente, o mapeamento de coeficientes multiplicadores para palavras de código para inclusão no fluxo de bits pode ser realizado nos coeficientes multiplicadores determinados de acordo com o primeiro aspecto da invenção, sem realizar processamento de predição.
[0054] De acordo com ainda outro aspecto da invenção, é fornecido um aparelho para decodificar um conjunto codificado atual de amostras de uma imagem incluindo uma pluralidade de pixels. O aparelho compreende um decodificador para reconstruir o conjunto atual e um aparelho de acordo com o primeiro aspecto da invenção para filtrar o conjunto reconstruído.
[0055] De acordo com as modalidades, os circuitos de processamento do aparelho de acordo com o primeiro aspecto da invenção são ainda configurados para obter coeficientes multiplicadores de palavras de código binárias incluídas em um fluxo de bits recebido aplicando uma operação de mapeamento.
[0056] Em particular, os coeficientes multiplicadores obtidos podem ser os coeficientes de filtro a serem usados para a filtragem. Alternativamente, os coeficientes multiplicadores obtidos podem ser coeficientes multiplicadores residuais que representam a diferença entre os valores de coeficiente reais e os coeficientes multiplicadores preditos de acordo com um esquema de predição. O esquema de predição pode ser indicado por informações de controle de predição ainda incluídas no fluxo de bits recebido. Nesse caso, os circuitos de processamento são ainda configurados para determinar os valores dos coeficientes do filtro reconstruindo-os a partir dos coeficientes multiplicadores residuais obtidos e das informações de controle de predição. Alternativamente, o esquema de predição (método de predição) pode ser predefinido e, portanto, aplicado da mesma maneira no codificador e no decodificador sem quaisquer informações de controle de predição transmitidas. Os circuitos de processamento então determinam os valores dos coeficientes do filtro reconstruindo-os a partir dos coeficientes multiplicadores residuais obtidos.
[0057] De acordo com as modalidades, a determinação pelos circuitos de processamento inclui ainda a realização de uma determinação quanto a se o valor determinado do pelo menos um coeficiente multiplicador, obtido diretamente do fluxo de bits recebido pela operação de mapeamento ou por reconstrução a partir dos coeficientes multiplicadores residuais obtidos estão dentro do conjunto de valores permitidos e, se não, converter o valor determinado para o valor mais próximo que esteja dentro do conjunto de valores permitidos.
[0058] Deste modo, é garantido que os coeficientes de filtro que são aplicados nas amostras de imagens reconstruídas obedecem às regras de acordo com a invenção.
[0059] Os detalhes de uma ou mais modalidades são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0060] A seguir, modalidades da invenção são descritas em mais detalhes com referência às figuras e desenhos anexos, nos quais: a Figura 1 é um diagrama de blocos mostrando um exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção; a Figura 2 é um diagrama de blocos mostrando um exemplo de um codificador de vídeo configurado para implementar modalidades da invenção; a Figura 3 é um diagrama de blocos mostrando um exemplo de estrutura de um decodificador de vídeo configurado para implementar modalidades da invenção; a Figura 4 mostra um exemplo de um núcleo de filtro ao qual a invenção pode ser aplicada; a Figura 5 mostra exemplos de formatos de filtro típicos para filtros adaptativos aos quais a invenção pode ser aplicada; a Figura 6 ilustra um exemplo de múltiplos filtros fixos a serem aplicados na filtragem de interpolação, como um exemplo comparativo; a Figura 7 ilustra um exemplo de implementação particular de uma modalidade da invenção; a Figura 8A ilustra um exemplo de processamento de lado de codificador para codificação e sinalização de coeficientes de filtro; a Figura 8B ilustra um exemplo de processamento de lado de decodificador para decodificar e reconstruir coeficientes de filtro; a Figura 9 ilustra um exemplo de implementação particular de outra modalidade da invenção; a Figura 10 ilustra um exemplo de implementação particular de ainda outra modalidade da invenção e serve para uma ilustração do benefício alcançado por meio da invenção; e a Figura 11 ilustra um outro exemplo de um núcleo de filtro ao qual a invenção pode ser aplicada.
[0061] Nos desenhos, sinais de referência idênticos referem-se a recursos idênticos ou pelo menos funcionalmente equivalentes.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0062] Na descrição a seguir, é feita referência às figuras anexas, que fazem parte da divulgação e que mostram, a título de ilustração, aspectos específicos das modalidades da invenção ou aspectos específicos em que modalidades da invenção podem ser usadas. Entende-se que as modalidades da invenção podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não representadas nas figuras. A seguinte descrição detalhada, portanto, não deve ser tomada em um sentido limitante, e o escopo da invenção é definido pelas reivindicações anexas.
[0063] Por exemplo, entende-se que uma divulgaçã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 um ou uma pluralidade de passos de método específicos forem descritos, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar os passos descritos ou uma pluralidade de passos de método (por exemplo, uma unidade realizando aquele ou pluralidade de passos, ou uma pluralidade de unidades, cada uma realizando um ou mais da pluralidade de passos), mesmo se tais uma ou mais unidades não forem explicitamente descritas ou ilustradas nas figuras. Por outro lado, por exemplo, se um aparelho específico é descrito com base em uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir um passo para realizar a funcionalidade de uma ou pluralidade de unidades (por exemplo, um passo realizando a funcionalidade de uma ou pluralidade de unidades, ou uma pluralidade de passos, cada um realizando a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tal uma ou pluralidade de passos não for explicitamente descrita ou ilustrada nas figuras. Além disso, entende-se que os recursos das várias modalidades exemplares e/ou aspectos descritos neste documento podem ser combinados uns com os outros, a menos que especificamente indicado de outra forma.
[0064] A codificação de vídeo normalmente se refere ao processamento de uma sequência de imagens, que formam o vídeo ou a sequência de vídeo. Em vez do termo imagem, os termos quadro ou imagem podem ser usados como sinônimos no campo da codificação de vídeo. A codificação de vídeo compreende duas partes, codificação de vídeo e decodificação de vídeo. A codificação de vídeo é realizada no lado de fonte, geralmente compreendendo o processamento (por exemplo, por compressão) das imagens de vídeo originais para reduzir a quantidade de dados necessária para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficiente). A decodificação de vídeo é realizada no lado de destino e normalmente compreende o processamento inverso em comparação com o codificador para reconstruir as imagens de vídeo. As modalidades que se referem à "codificação" de imagens de vídeo (ou imagens em geral, como será explicado posteriormente) devem ser entendidas como relacionadas ambas "codificação" e "decodificação" de imagens de vídeo. A combinação da parte de codificação e da parte de decodificação também é conhecida como CODEC (COding and DECoding).
[0065] No caso de codificação de vídeo sem perdas, as imagens de vídeo originais podem ser reconstruídas, ou seja, as imagens de vídeo reconstruídas têm a mesma qualidade das imagens de vídeo originais (assumindo nenhuma perda de transmissão ou outra perda de dados durante o armazenamento ou transmissão). No caso de codificação de vídeo com perdas, a compressão adicional, por exemplo, por quantização, é realizada, para reduzir a quantidade de dados que representam as imagens de vídeo, que não podem ser completamente reconstruídas no decodificador, ou seja, a qualidade das imagens de vídeo reconstruídas é inferior ou pior em comparação com a qualidade das imagens de vídeo originais.
[0066] Vários padrões de codificação de vídeo desde H.261 pertencem ao grupo de “codecs de vídeo híbridos com perdas” (ou seja, combinam predição espacial e temporal no domínio da amostra e codificação de transformada 2D para aplicação de quantização no domínio de transformada). Cada imagem de uma sequência de vídeo é normalmente particionada em um conjunto de blocos não sobrepostos e a codificação é normalmente realizada em um nível de bloco. Em outras palavras, no codificador, o vídeo é normalmente processado,
ou seja, codificado, em um nível de bloco (bloco de vídeo), por exemplo, usando a predição espacial (intraimagem) e a predição temporal (interimagem) para gerar um bloco de predição, subtraindo o bloco de predição do bloco atual (bloco atualmente processado/a ser processado) para obter um bloco residual, transformando o bloco residual e quantizando o bloco residual no domínio de transformada para reduzir a quantidade de dados a serem transmitidos (compressão), enquanto que no decodificador, o processamento inverso em comparação com o codificador é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica a malha de processamento de decodificador de modo que ambos gerem predições idênticas (por exemplo, intra e interpredições) e/ou reconstruções para processamento, ou seja, codificação dos blocos subsequentes.
[0067] Como processamento de imagem de vídeo (também referido como processamento de imagem em movimento) e processamento de imagem estática (o termo processamento compreendendo codificação), compartilham muitos conceitos e tecnologias ou ferramentas, a seguir os termos "figura" ou "imagem" e os termos equivalentes "dados de figura” ou “dados de imagem” são usados para se referir a uma imagem de vídeo de uma sequência de vídeo (como explicado acima) e/ou a uma imagem estática para evitar repetições e distinções desnecessárias entre imagens de vídeo e imagens estáticas, onde não for necessário. No caso de a descrição referir-se apenas a figuras estáticas (ou imagens estáticas), o termo “figura estática” deve ser usado.
[0068] Nas seguintes modalidades de um codificador
100, um decodificador 200 e um sistema de codificação 300 são descritos com base nas Figuras 1 a 3 (antes de descrever as modalidades da invenção em mais detalhes com base nas Figuras 7 a 9).
[0069] A Figura 1 é um diagrama de blocos conceitual ou esquemático ilustrando uma modalidade de um sistema de codificação 300, por exemplo, um sistema de codificação de imagem 300, em que o sistema de codificação 300 compreende um dispositivo de fonte 310 configurado para fornecer dados codificados 330, por exemplo, uma imagem codificada 330, por exemplo, para um dispositivo de destino 320 para decodificar os dados codificados 330.
[0070] O dispositivo de fonte 310 compreende um codificador 100 ou unidade de codificação 100 e pode, adicionalmente, isto é, opcionalmente, compreender uma fonte de imagem 312, uma unidade de pré-processamento 314, por exemplo, uma unidade de pré-processamento de imagem 314 e uma interface de comunicação ou unidade de comunicação 318.
[0071] A fonte de imagem 312 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, para capturar uma imagem do mundo real e/ou qualquer tipo de dispositivo de geração de imagem, por exemplo, um processador gráfico de computador para gerar uma imagem animada por computador, ou qualquer tipo de dispositivo para obter e/ou fornecer uma imagem do mundo real, uma imagem animada por computador (por exemplo, um conteúdo de tela, uma imagem de realidade virtual (virtual reality, VR)) e/ou qualquer combinação dos mesmos (por exemplo, uma imagem de realidade aumentada (augmented reality, AR)). A seguir, todos esses tipos de figuras ou imagens e qualquer outro tipo de figura ou imagem serão referidos como "figura", "imagem" ou "dados de figura" ou "dados de imagem", a menos que especificamente descrito de outra forma, enquanto as explicações anteriores no que diz respeito aos termos “figura” ou “imagem” cobrindo “figuras de vídeo” e “figuras estáticas” continuam válidas, a menos que seja explicitamente especificado de forma diferente.
[0072] Uma imagem (digital) é ou pode ser considerada como um arranjo ou matriz bidimensional de amostras com valores de intensidade. Uma amostra na matriz também pode ser referida como pixel (forma abreviada de elemento de imagem) ou um pel. O número de amostras na direção horizontal e vertical (ou eixo) da matriz ou imagem define o tamanho e/ou resolução da imagem. Para a representação da cor, normalmente três componentes de cor são empregados, ou seja, a imagem pode ser representada ou incluir três matrizes de amostra. No formato RGB ou espaço de cor, uma imagem compreende uma matriz de amostra vermelha, verde e azul correspondente. No entanto, na codificação de vídeo, cada pixel é tipicamente representado em um formato de luminância/crominância ou espaço de cor, por exemplo, YCbCr, que compreende um componente de luminância indicado por Y (às vezes também L é usado no lugar) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou luma para abreviar) Y representa o brilho ou intensidade do nível de cinza (por exemplo, como em uma imagem em escala de cinza), enquanto os dois componentes de crominância (ou croma para abreviar) Cb e Cr representam a cromaticidade ou componentes de informações de cor. Consequentemente, uma imagem no formato YCbCr compreende uma matriz de amostra de luminância de valores de amostra de luminância (Y), e duas matrizes de amostra de crominância de valores de crominância (Cb e Cr). As imagens no formato RGB podem ser convertidas ou transformadas no formato YCbCr e vice-versa, o processo também é conhecido como transformação ou conversão de cores. Se uma imagem for monocromática, a imagem pode compreender apenas uma matriz de amostra de luminância.
[0073] A fonte de imagem 312 pode ser, por exemplo, uma câmera para capturar uma imagem, uma memória, por exemplo, uma memória de imagem, compreendendo ou armazenando uma imagem previamente capturada ou gerada, e/ou qualquer tipo de interface (interna ou externa) para obter ou receber uma imagem. A câmera pode ser, por exemplo, uma câmera integrada ou local integrada no dispositivo de fonte, a memória pode ser uma memória local ou integrada, por exemplo, integrada no dispositivo de fonte. A interface pode ser, por exemplo, uma interface externa para receber uma imagem de uma fonte de vídeo externa, por exemplo, um dispositivo externo de captura de imagem como uma câmera, uma memória externa ou um dispositivo externo de geração de imagem, por exemplo, um processador de computador gráfico externo, computador ou servidor. A interface pode ser qualquer tipo de interface, por exemplo, uma interface com fio ou sem fio, uma interface ótica, de acordo com qualquer protocolo de interface proprietário ou padronizado. A interface para obter os dados de imagem 313 pode ser a mesma interface ou uma parte da interface de comunicação 318.
[0074] As interfaces entre as unidades dentro de cada dispositivo incluem conexões a cabo, interfaces USB, interfaces de comunicação 318 e 322 entre o dispositivo de fonte 310 e o dispositivo de destino 320 incluem conexões a cabo, interfaces USB, interfaces de rádio.
[0075] Em distinção à unidade de pré-processamento 314 e ao processamento realizado pela unidade de pré- processamento 314, a imagem ou dados de imagem 313 também podem ser referidos como imagem bruta ou dados de imagem brutos 313.
[0076] A unidade de pré-processamento 314 é configurada para receber os dados de imagem (brutos) 313 e para realizar o pré-processamento nos dados de imagem 313 para obter uma imagem pré-processada 315 ou dados de imagem pré-processados 315. Pré-processamento realizado pela unidade de pré-processamento 314 pode, por exemplo, compreender corte, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor ou eliminação de ruído.
[0077] O codificador 100 é configurado para receber os dados de imagem pré-processados 315 e fornecer dados de imagem codificados 171 (mais detalhes serão descritos, por exemplo, com base na Figura 2).
[0078] A interface de comunicação 318 do dispositivo de fonte 310 pode ser configurada para receber os dados de imagem codificados 171 e para transmiti-los diretamente para outro dispositivo, por exemplo, o dispositivo de destino 320 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta, ou para processar os dados de imagem codificados 171 para, respectivamente, antes de armazenar os dados codificados 330 e/ou transmitir os dados codificados 330 para outro dispositivo, por exemplo, o dispositivo de destino 320 ou qualquer outro dispositivo para decodificação ou armazenamento.
[0079] O dispositivo de destino 320 compreende um decodificador 200 ou unidade de decodificação 200 e pode, adicionalmente, isto é, opcionalmente, compreender uma interface de comunicação ou unidade de comunicação 322, uma unidade de pós-processamento 326 e um dispositivo de exibição
328.
[0080] A interface de comunicação 322 do dispositivo de destino 320 é configurada para receber os dados de imagem codificados 171 ou os dados codificados 330, por exemplo, diretamente do dispositivo de fonte 310 ou de qualquer outra fonte, por exemplo, uma memória, por exemplo, uma memória de dados de imagem codificados.
[0081] A interface de comunicação 318 e a interface de comunicação 322 podem ser configuradas para transmitir, respectivamente, receber os dados de imagem codificados 171 ou dados codificados 330 por meio de um enlace de comunicação direto entre o dispositivo de fonte 310 e o dispositivo de destino 320, por exemplo, uma conexão direta com ou sem fio, incluindo conexão ótica ou através de qualquer tipo de rede, por exemplo, uma rede com fio ou sem fio ou qualquer combinação delas, ou qualquer tipo de rede pública e privada, ou qualquer tipo de combinação das mesmas.
[0082] A interface de comunicação 318 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 171 em um formato apropriado, por exemplo, pacotes, para transmissão através de um enlace de comunicação ou rede de comunicação, e pode ainda compreender proteção contra perda de dados.
[0083] A interface de comunicação 322, formando a contraparte da interface de comunicação 318, pode ser, por exemplo, configurada para desempacotar os dados codificados 330 para obter os dados de imagem codificados 171 e pode ainda ser configurada para realizar proteção contra perda de dados e recuperação de perda de dados, por exemplo, compreendendo a ocultação de erros.
[0084] Tanto a interface de comunicação 318 quanto a interface de comunicação 322 podem ser configuradas como interfaces de comunicação unidirecionais, conforme indicado pela seta para os dados de imagem codificados 330 na Figura 1 apontando do dispositivo de fonte 310 para o dispositivo de destino 320, ou interfaces de comunicação bidirecionais, e podem ser configuradas, por exemplo, para enviar e receber mensagens, por exemplo, para configurar uma conexão, para reconhecer e/ou reenviar dados perdidos ou atrasados, incluindo dados de imagem, e trocar quaisquer outras informações relacionadas ao enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificados.
[0085] O decodificador 200 é configurado para receber os dados de imagem codificados 171 e fornecer dados de imagem decodificados 231 ou uma imagem decodificada 231 (mais detalhes serão descritos, por exemplo, com base na Figura 9).
[0086] O pós-processador 326 do dispositivo de destino 320 é configurado para pós-processar os dados de imagem decodificados 231, por exemplo, a imagem decodificada 231, para obter dados de imagem pós-processados 327, por exemplo, uma imagem pós-processada 327. O pós-processamento realizado pela unidade de pós-processamento 326 pode compreender, por exemplo, conversão de formato de cor (por exemplo, a partir de YCbCr para RGB), correção de cor, corte, ou reamostragem, ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 231 para exibição, por exemplo, pelo dispositivo de exibição
328.
[0087] O dispositivo de exibição 328 do dispositivo de destino 320 é configurado para receber os dados de imagem pós-processados 327 para exibir a imagem, por exemplo, para um usuário ou visualizador. O dispositivo de exibição 328 pode ser ou compreender qualquer tipo de exibição para representar a imagem reconstruída, por exemplo, uma exibição ou monitor integrado ou externo. As exibições podem, por exemplo, compreender tubos de raios catódicos (cathode ray tubes, CRT), exibições de cristal líquido (liquid Crystal displays, LCD), exibições de plasma, diodos emissores de luz orgânicos (organic light emitting diodes, OLED) ou qualquer outro tipo de exibição, como projetores, exibições holográficas, aparelhos para gerar hologramas.
[0088] Embora a Figura 1 represente o dispositivo de fonte 310 e o dispositivo de destino 320 como dispositivos separados, modalidades de dispositivos também podem compreender ambos ou ambas as funcionalidades, o dispositivo de fonte 310 ou funcionalidade correspondente e o dispositivo de destino 320 ou funcionalidade correspondente. Em tais modalidades, o dispositivo de fonte 310 ou a funcionalidade correspondente e o dispositivo de destino 320 ou a funcionalidade correspondente podem ser implementados usando o mesmo hardware e/ou software ou por hardware e/ou software separados ou qualquer combinação dos mesmos.
[0089] Como será aparente para o especialista com base na descrição, a existência e a divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de fonte 310 e/ou dispositivo de destino 320 como mostrado na Figura 1 pode variar dependendo do dispositivo e aplicação reais.
[0090] A seguir, alguns exemplos não limitativos para o sistema de codificação 300, o dispositivo de fonte 310 e/ou dispositivo de destino 320 serão fornecidos.
[0091] Vários produtos eletrônicos, como um smartphone, um tablet ou uma câmera portátil com exibição integrada, podem ser vistos como exemplos para um sistema de codificação 300. Eles contêm um dispositivo de exibição 328 e a maioria deles contém uma câmera integrada, ou seja, uma fonte de imagem 312, também. Os dados de imagem tirados pela câmera integrada são processados e exibidos. O processamento pode incluir codificação e decodificação dos dados de imagem internamente. Além disso, os dados de imagem codificados podem ser armazenados em uma memória integrada.
[0092] Alternativamente, esses produtos eletrônicos podem ter interfaces com ou sem fio para receber dados de imagem de fontes externas, como a Internet ou câmeras externas, ou para transmitir os dados de imagem codificados para monitores externos ou unidades de armazenamento.
[0093] Por outro lado, os decodificadores não contêm uma câmera integrada ou um monitor, mas realizam processamento de imagem dos dados de imagem recebidos para exibição em um dispositivo de exibição externo. Tal decodificador pode ser incorporado por um conjunto de chips, por exemplo.
[0094] Alternativamente, um dispositivo semelhante a um decodificador pode ser incluído em um dispositivo de exibição, como um aparelho de TV com exibição integrada.
[0095] Câmeras de vigilância sem exibição integrada constituem outro exemplo. Elas representam um dispositivo de fonte com uma interface para a transmissão dos dados de imagem capturados e codificados para um dispositivo de exibição externo ou um dispositivo de armazenamento externo.
[0096] Ao contrário, dispositivos como óculos inteligentes ou óculos 3D, por exemplo usados para AR ou VR, representam um dispositivo de destino 320. Eles recebem os dados de imagem codificados e os exibem.
[0097] Portanto, o dispositivo de fonte 310 e o dispositivo de destino 320, como mostrado na Figura 1, são apenas modalidades exemplares da invenção e as modalidades da invenção não estão limitadas àquelas mostradas na Figura
1.
[0098] O dispositivo de fonte 310 e o dispositivo de destino 320 podem compreender qualquer um de uma ampla gama de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou estacionários, por exemplo, notebooks ou laptops, telefones celulares, telefones inteligentes, tablets ou computadores tablet, câmeras, computadores de mesa, decodificadores, televisores, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivos de transmissão contínua de vídeo, dispositivo receptor de difusão ou semelhantes. Para codificação e decodificação profissional em grande escala, o dispositivo de fonte 310 e/ou o dispositivo de destino 320 pode compreender adicionalmente servidores e estações de trabalho, que podem ser incluídos em grandes redes. Esses dispositivos podem usar nenhum ou qualquer tipo de sistema operacional.
CODIFICADOR E MÉTODO DE CODIFICAÇÃO
[0099] A Figura 2 mostra um diagrama de blocos esquemático/conceitual de uma modalidade de um codificador 100, por exemplo, um codificador de imagem 100, que compreende uma entrada 102, uma unidade de cálculo residual 104, uma unidade de transformação 106, uma unidade de quantização 108, uma unidade de quantização inversa 110 e unidade de transformação inversa 112, uma unidade de reconstrução 114, um armazenamento temporário (“buffer”) 116, um filtro de malha 120, um armazenamento temporário de imagem decodificada (decoded picture buffer, DPB) 130, uma unidade de predição 160, que inclui uma unidade de interestimativa 142, um unidade de interpredição 144, uma unidade de intraestimativa 152, uma unidade de intrapredição 154 e uma unidade de seleção de modo 162, uma unidade de codificação por entropia 170 e uma saída 172. Um codificador de vídeo 100, como mostrado na Figura 2, também pode ser referido como um codificador de vídeo híbrido ou um codificador de vídeo de acordo com um codec de vídeo híbrido. Cada unidade pode consistir em um processador e uma memória não transitória para realizar seus passos de processamento, executando um código armazenado na memória não transitória pelo processador.
[00100] Por exemplo, a unidade de cálculo residual 104, a unidade de transformação 106, a unidade de quantização 108 e a unidade de codificação por entropia 170 formam um percurso de sinal direto do codificador 100, enquanto, por exemplo, a unidade de quantização inversa 110, a unidade de transformação inversa 112, a unidade de reconstrução 114, o armazenamento temporário 116, o filtro de malha 120, o armazenamento temporário de imagem decodificada (decoded picture buffer, DPB) 130, a unidade de interpredição 144 e a unidade de intrapredição 154 formam um percurso de sinal inverso do codificador, em que o percurso de sinal inverso do codificador corresponde ao percurso de sinal do decodificador para fornecer processamento inverso para reconstrução e predição idênticas (ver decodificador 200 na Figura 3).
[00101] O codificador é configurado para receber, por exemplo, pela entrada 102, uma imagem 101 ou um bloco de imagem 103 da imagem 101, por exemplo, imagem de uma sequência de imagens formando um vídeo ou sequência de vídeo. O bloco de imagem 103 também pode ser referido como bloco de imagem atual ou bloco de imagem a ser codificado, e a imagem 101 como imagem atual ou imagem a ser codificada (em particular na codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, imagens anteriormente codificadas e/ou decodificadas da mesma sequência de vídeo, ou seja, a sequência de vídeo que também compreende a imagem atual).
PARTICIONAMENTO
[00102] As modalidades do codificador 100 podem compreender uma unidade de particionamento (não representada na Figura 2), por exemplo, que também pode ser referida como unidade de particionamento de imagem, configurada para particionar a imagem 103 em uma pluralidade de blocos, por exemplo, blocos como o bloco 103, tipicamente em uma pluralidade de blocos não sobrepostos. A unidade de particionamento 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 alterar o tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem para os blocos correspondentes.
[00103] Cada bloco da pluralidade de blocos pode ter dimensões quadradas ou dimensões retangulares mais gerais. Os blocos que são áreas da imagem com formas não retangulares podem não aparecer.
[00104] Como a imagem 101, o bloco 103 é novamente ou pode ser considerado como uma matriz bidimensional ou matriz de amostras com valores de intensidade (valores de amostra), embora de menor dimensão do que a imagem 101. Em outras palavras, o bloco 103 pode compreender, por exemplo, uma matriz de amostra (por exemplo, uma matriz de luma no caso de uma imagem monocromática 101) ou três matrizes de amostra (por exemplo, uma matriz de luma e dois croma no caso de uma imagem colorida 101) ou qualquer outro número e/ou tipo de matrizes dependendo do formato de cor aplicado. O número de amostras na direção horizontal e vertical (ou eixo) do bloco 103 define o tamanho do bloco 103.
[00105] O codificador 100, conforme mostrado na Figura 2, é configurado para codificar a imagem 101 bloco a bloco, por exemplo, a codificação e a predição são realizadas por bloco 103.
CÁLCULO RESIDUAL
[00106] A unidade de cálculo residual 104 é configurada para calcular um bloco residual 105 com base no bloco de imagem 103 e um bloco de predição 165 (mais detalhes sobre o bloco de predição 165 são fornecidos posteriormente), por exemplo, subtraindo valores de amostra do bloco de predição 165 a partir dos valores de amostra do bloco de imagem 103, amostra por amostra (pixel por pixel) para obter o bloco residual 105 no domínio de amostra.
TRANSFORMAÇÃO
[00107] A unidade de transformação 106 é configurada para aplicar uma transformação, por exemplo, uma transformada de frequência espacial ou uma transformada espacial linear, por exemplo, uma transformada de cosseno discreta (discrete cosine transform, DCT) ou transformada de seno discreta (discrete sine transform, DST), nos valores de amostra do bloco residual 105 para obter coeficientes transformados 107 em um domínio de transformada. Os coeficientes transformados 107 também podem ser referidos como coeficientes residuais transformados e representam o bloco residual 105 no domínio de transformada.
[00108] A unidade de transformação 106 pode ser configurada para aplicar aproximações inteiras de DCT/DST, como as transformadas de núcleo especificadas para HEVC/H.265. Comparado a uma transformada de DCT ortonormal, tais aproximações inteiras são tipicamente dimensionadas por um determinado fator. A fim de preservar a norma do bloco residual que é processado pelas transformadas direta e inversa, fatores de escalonamento adicionais são aplicados como parte do processo de transformada. Os fatores de escalonamento são normalmente escolhidos com base em certas restrições, como fatores de escalonamento sendo uma potência de dois para operação de desvio, profundidade de bit dos coeficientes transformados, compensação entre precisão e custos de implementação, etc. Fatores de escalonamento específicos são, por exemplo, especificados para a transformada inversa, por exemplo, pela unidade de transformação inversa 212, em um decodificador 200 (e a transformada inversa correspondente, por exemplo, pela unidade de transformação inversa 112 em um codificador 100) e fatores de escalonamento correspondentes para a transformação direta, por exemplo, pela unidade de transformação 106, em um codificador 100 podem ser especificados em conformidade.
QUANTIZAÇÃO
[00109] A unidade de quantização 108 é configurada para quantizar os coeficientes transformados 107 para obter coeficientes quantizados 109, por exemplo, aplicando quantização escalar ou quantização vetorial. Os coeficientes quantizados 109 também podem ser referidos como coeficientes residuais quantizados 109. Por exemplo, para a quantização escalar, escalonamento diferente pode ser aplicado para alcançar uma quantização mais fina ou mais grosseira. Tamanhos de passo de quantização menores correspondem a quantização mais fina, enquanto tamanhos de passo de quantização maiores correspondem a quantização mais grosseira. O tamanho e passo de quantização aplicável pode ser indicado por um parâmetro de quantização (parâmetro de quantização, QP). O parâmetro de quantização pode, por exemplo, ser um índice para um conjunto predefinido de tamanhos de passos de quantização aplicáveis. Por exemplo, pequenos parâmetros de quantização podem corresponder a quantização fina (tamanhos de passos de quantização pequenos) e parâmetros de quantização grandes podem corresponder a quantização grosseira (tamanhos de passos de quantização grandes) ou vice-versa. A quantização pode incluir divisão por um tamanho de passo de quantização e desquantização correspondente ou inversa, por exemplo, por quantização inversa 110, pode incluir multiplicação pelo tamanho do passo de quantização. As modalidades de acordo com a codificação de vídeo de alta eficiência (High- Efficiency Video Coding, HEVC) podem ser configuradas para usar um parâmetro de quantização para determinar o tamanho do passo de quantização. Geralmente, o tamanho do passo 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 escalonamento adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, que pode ser modificada por causa do escalonamento usado na aproximação de ponto fixo da equação para o tamanho de passo de quantização e parâmetro de quantização. Em uma implementação de exemplo, o escalonamento da transformada inversa e desquantização pode ser combinado. Alternativamente, tabelas de quantização personalizadas podem ser usadas e sinalizadas de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perdas, em que a perda aumenta com o aumento dos tamanhos dos passos de quantização.
[00110] As modalidades do codificador 100 (ou respectivamente da unidade de quantização 108) podem ser configuradas para emitir as configurações de quantização, incluindo esquema de quantização e tamanho de passo de quantização, por exemplo, por meio do parâmetro de quantização correspondente, de modo que um decodificador 200 possa receber e aplicar a quantização inversa correspondente. As modalidades do codificador 100 (ou unidade de quantização 108) podem ser configuradas para emitir o esquema de quantização e o tamanho de passo de quantização, por exemplo, diretamente ou codificados por entropia através da unidade de codificação por entropia 170 ou qualquer outra unidade de codificação por entropia.
[00111] A unidade de quantização inversa 110 é configurada para aplicar a quantização inversa da unidade de quantização 108 nos coeficientes quantizados para obter coeficientes desquantizados 111, por exemplo, aplicando o inverso do esquema de quantização aplicado pela unidade de quantização 108 com base em ou usando o mesmo tamanho de quantização do passo que a unidade de quantização 108. Os coeficientes desquantizados 111 também podem ser referidos como coeficientes residuais desquantizados 111 e correspondem - embora normalmente não sejam idênticos aos coeficientes transformados devido à perda por quantização - aos coeficientes transformados 108.
[00112] A unidade de transformada inversa 112 é configurada para aplicar a transformada inversa da transformação aplicada pela unidade de transformação 106, por exemplo, uma transformada de cosseno discreta inversa (discrete cosine transform, DCT) ou transformada de seno discreta inversa (discrete sine transform, DST), para obter um bloco transformado inversamente 113 no domínio de amostra. O bloco transformado inversamente 113 também pode ser referido como bloco desquantizado transformado inversamente 113 ou bloco residual transformado inversamente 113.
[00113] A unidade de reconstrução 114 é configurada para combinar o bloco transformado inversamente 113 e o bloco de predição 165 para obter um bloco reconstruído 115 no domínio de amostra, por exemplo, ao adicionar amostras aos valores de amostra do bloco residual decodificado 113 e os valores de amostra do bloco de predição 165.
[00114] A unidade de armazenamento temporário 116 (ou "armazenamento temporário" para abreviar 116), por exemplo, um armazenamento temporário de linha 116, é configurada para armazenar em armazenamento temporário ou armazenar o bloco reconstruído e os respectivos valores de amostra, por exemplo, para intraestimativa e/ou intrapredição. Em outras modalidades, o codificador pode ser configurado para usar blocos reconstruídos não filtrados e/ou os respectivos valores de amostra armazenados na unidade de armazenamento temporário 116 para qualquer tipo de estimativa e/ou predição.
[00115] As modalidades do codificador 100 podem ser configuradas de modo que, por exemplo, a unidade de armazenamento temporário 116 não seja usada apenas para armazenar os blocos reconstruídos 115 para intraestimativa 152 e/ou intrapredição 154, mas também para a unidade de filtro de malha 120, e/ou tal que, por exemplo, a unidade de armazenamento temporário 116 e a unidade de armazenamento temporário de imagem decodificada 130 formem um armazenamento temporário. Outras modalidades podem ser configuradas para usar blocos filtrados 121 e/ou blocos ou amostras a partir do armazenamento temporário de imagem decodificada 130 (ambos não mostrados na Figura 2) como entrada ou base para intraestimativa 152 e/ou intrapredição
154.
[00116] A unidade de filtro de malha 120 (ou "filtro de malha" curto 120) é configurada para filtrar o bloco reconstruído 115 para obter um bloco filtrado 121, por exemplo, aplicando um filtro de deslocamento adaptativo de amostra (sample-adaptive offset, SAO) de desbloqueio ou outros filtros, por exemplo, filtros de nitidez ou suavização ou filtros colaborativos. O bloco filtrado 121 também pode ser referido como bloco reconstruído filtrado 121.
[00117] As modalidades da unidade de filtro de malha 120 podem compreender uma unidade de análise de filtro e a unidade de filtro real, em que a unidade de análise de filtro é configurada para determinar parâmetros de filtro de malha para o filtro real. A unidade de análise de filtro pode ser configurada para aplicar parâmetros de filtro predeterminados fixos ao filtro de malha real, selecionar adaptativamente parâmetros de filtro de um conjunto de parâmetros de filtro predeterminados ou calcular adaptativamente parâmetros de filtro para o filtro de malha real.
[00118] As modalidades da unidade de filtro de malha 120 podem compreender (não mostrado na Figura 2) um ou uma pluralidade de filtros (tais como componentes de filtro de malha e/ou subfiltros), por exemplo, um ou mais de diferentes tipos ou tipos de filtros, por exemplo, conectados em série ou em paralelo ou em qualquer combinação dos mesmos, em que cada um dos filtros pode compreender individualmente ou em conjunto com outros filtros da pluralidade de filtros uma unidade de análise de filtro para determinar os respectivos parâmetros de filtro de malha, por exemplo, conforme descrito no parágrafo anterior.
[00119] As modalidades do codificador 100 (respectivamente unidade de filtro de malha 120) podem ser configuradas para emitir os parâmetros de filtro de malha, por exemplo, diretamente ou codificados por entropia por meio da unidade de codificação por entropia 170 ou qualquer outra unidade de codificação por entropia, de modo que, por exemplo, um decodificador 200 pode receber e aplicar os mesmos parâmetros de filtro de malha para decodificação.
[00120] O armazenamento temporário de imagem decodificada (decoded picture buffer, DPB) 130 é configurado para receber e armazenar o bloco filtrado 121. O armazenamento temporário de imagem decodificada 130 pode ser ainda configurado para armazenar outros blocos previamente filtrados, por exemplo, blocos previamente reconstruídos e filtrados 121, da mesma imagem atual ou de imagens diferentes, por exemplo, imagens previamente reconstruídas, e pode fornecer imagens previamente reconstruídas, ou seja, imagens decodificadas (e blocos de referência e amostras correspondentes) e/ou uma imagem atual parcialmente reconstruída (e blocos e amostras de referência correspondentes), por exemplo, para interestimativa e/ou interpredição.
[00121] Modalidades adicionais da invenção também podem ser configuradas para usar os blocos filtrados anteriormente e os valores de amostra filtrados correspondentes do armazenamento temporário de imagem decodificada 130 para qualquer tipo de estimativa ou predição, por exemplo, intraestimativa e predição, bem como interestimativa e predição.
[00122] A unidade de predição 160, também referida como unidade de predição de bloco 160, é configurada para receber ou obter o bloco de imagem 103 (bloco de imagem atual 103 da imagem atual 101) e dados de imagem decodificados ou pelo menos reconstruídos, por exemplo, amostras de referência da mesma imagem (atual) a partir do armazenamento temporário 116 e/ou dados de imagem decodificados 231 a partir de um ou uma pluralidade de imagens previamente decodificadas a partir do armazenamento temporário de imagem decodificada 130, e para processar tais dados para predição, ou seja, para fornecer um bloco de predição 165, que pode ser um bloco interpredito 145 ou um bloco intrapredito 155.
[00123] A unidade de seleção de modo 162 pode ser configurada para selecionar um modo de predição (por exemplo, um modo intra ou interpredição) e/ou um bloco de predição correspondente 145 ou 155 para ser usado como bloco de predição 165 para o cálculo do bloco residual 105 e para a reconstrução do bloco reconstruído 115.
[00124] As modalidades da unidade de seleção de modo 162 podem ser configuradas para selecionar o modo de predição (por exemplo, a partir daqueles suportados pela unidade de predição 160), que fornece a melhor correspondência ou em outras palavras o resíduo mínimo (resíduo 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 162 pode ser configurada para determinar o modo de predição com base na otimização de distorção de taxa (rate distortion optimization, RDO), isto é, selecionar o modo de predição que fornece uma otimização de distorção de taxa mínima ou cuja distorção de taxa associada pelo menos cumpre um critério de seleção de modo de predição.
[00125] A seguir, o processamento de predição (por exemplo, unidade de predição 160) e seleção de modo (por exemplo, por unidade de seleção de modo 162) realizados por um codificador de exemplo 100 serão explicados em mais detalhes.
[00126] Conforme descrito acima, o codificador 100 é configurado para determinar ou selecionar o melhor ou um modo de predição ideal a partir de um conjunto de modos de predição (predeterminados). O conjunto de modos de predição pode compreender, por exemplo, modos de intrapredição e/ou modos de interpredição.
[00127] O conjunto de modos de intrapredição pode compreender 32 modos de intrapredição diferentes, por exemplo, modos não direcionais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido em H.264, ou pode compreender 65 diferentes modos de intrapredição, por exemplo, modos não direcionais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido em H.265.
[00128] O conjunto de (ou possíveis) modos de interpredição dependem das imagens de referência disponíveis (ou seja, imagens anteriores pelo menos parcialmente decodificadas, por exemplo, armazenadas no DPB 230) e outros parâmetros de interpredição, por exemplo, se a imagem de referência inteira ou apenas um parte, por exemplo, uma área de janela de pesquisa em torno da área do bloco atual, da imagem de referência é usada para pesquisar um bloco de referência de melhor correspondência, e/ou por exemplo, se a interpolação de pixel é aplicada, por exemplo, interpolação de meio/semi-pel e/ou quarter-pel, ou não.
[00129] Além dos modos de predição acima, o modo de salto e/ou o modo direto podem ser aplicados.
[00130] A unidade de predição 160 pode ser ainda configurada para particionar o bloco 103 em partições de bloco menores ou sub-blocos, por exemplo, iterativamente usando particionamento de árvore quádrupla (quad-tree- partitioning, QT), particionamento binário (binary partitioning, BT) ou particionamento de árvore tripla (triple-tree-partitioning, 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 103 e os modos de predição aplicados a cada uma das partições de bloco ou sub-blocos.
[00131] A unidade de interestimativa 142, também referida como unidade de interestimativa 142, é configurada para receber ou obter o bloco de imagem 103 (bloco de imagem atual 103 da imagem atual 101) e uma imagem decodificada 231, ou pelo menos uma ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos reconstruídos de uma ou uma pluralidade de outras/diferentes imagens previamente decodificadas 231, para interestimativa (ou "interestimativa de imagem"). Por exemplo, uma sequência de vídeo pode compreender a imagem atual e as imagens previamente decodificadas 231, ou em outras palavras, a imagem atual e as imagens previamente decodificadas 231 podem fazer parte de ou formar uma sequência de imagens formando uma sequência de vídeo.
[00132] O codificador 100 pode, por exemplo, ser configurado para selecionar (obter/determinar) um bloco de referência de uma pluralidade de blocos de referência da mesma ou diferentes imagens da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência, ...) e/ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e a posição do bloco atual como parâmetros de interestimativa 143 para a unidade de interpredição 144. Este deslocamento também é chamado de vetor de movimento (MV). A interestimativa também é conhecida como estimativa de movimento (motion estimation, ME) e a interpredição também predição de movimento (motion prediction, MP).
[00133] A unidade de interpredição 144 é configurada para obter, por exemplo, receber, um parâmetro de interpredição 143 e realizar a interpredição com base em ou usando o parâmetro de interpredição 143 para obter um bloco de interpredição 145.
[00134] Embora a Figura 2 mostre duas unidades (ou passos) distintas para a intercodificação, ou seja, interestimativa 142 e interpredição 152, ambas as funcionalidades podem ser realizadas como uma (interestimativa normalmente requer/compreende o cálculo de um/o bloco de interpredição, ou seja, o ou um "tipo de" interpredição 154), por exemplo, testando todos os possíveis ou um subconjunto predeterminado de possíveis modos de interpredição iterativamente enquanto armazena o melhor modo de interpredição e respectivo bloco de interpredição e usando o melhor modo de interpredição atualmente e respectivo bloco de interpredição como o parâmetro de interpredição 143 (final) e o bloco de interpredição 145 sem realizar outra vez a interpredição 144.
[00135] A unidade de intraestimativa 152 é configurada para obter, por exemplo, receber, o bloco de imagem 103 (bloco de imagem atual) e um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos vizinhos reconstruídos, da mesma imagem para intraestimativa. O codificador 100 pode, por exemplo, ser configurado para selecionar (obter/determinar) um modo de intrapredição a partir de uma pluralidade de modos de intrapredição e fornecê-lo como parâmetro de intraestimativa 153 para a unidade de intrapredição 154.
[00136] As modalidades do codificador 100 podem ser configuradas para selecionar o modo de intrapredição com base em um critério de otimização, por exemplo, resíduo mínimo (por exemplo, o modo de intrapredição fornecendo o bloco de predição 155 mais semelhante ao bloco de imagem atual 103) ou taxa de distorção mínima.
[00137] A unidade de intrapredição 154 é configurada para determinar com base no parâmetro de intrapredição 153, por exemplo, o modo de intrapredição 153 selecionado, o bloco de intrapredição 155.
[00138] Embora a Figura 2 mostre duas unidades distintas (ou passos) para a intracodificação, ou seja, intraestimativa 152 e intrapredição 154, ambas as funcionalidades podem ser realizadas como uma (intraestimativa normalmente requer/compreende o cálculo do bloco de intrapredição, ou seja, um "tipo de" intrapredição
154), por exemplo, testando todos os possíveis ou um subconjunto predeterminado de modos de intrapredição possíveis iterativamente, ao armazenar o melhor modo de intrapredição e respectivo bloco de intrapredição, e usando o melhor modo de intrapredição atualmente e respectivo bloco de intrapredição como o parâmetro intrapredição (final) 153 e o bloco de intrapredição 155 sem realizar a intrapredição 154 outra vez.
[00139] A unidade de codificação por entropia 170 é configurada para aplicar um esquema ou algoritmo de codificação por entropia (por exemplo, um esquema de codificação de comprimento variável (variable length coding, VLC), um esquema VLC adaptativo de contexto (context adaptive VLC, CALVC), um esquema de codificação aritmética, um codificação aritmética binária adaptativa ao contexto (context adaptive binary arithmetic coding, CABAC)) nos coeficientes residuais quantizados 109, parâmetros de interpredição 143, parâmetro de intrapredição 153 e/ou parâmetros de filtro de malha, individualmente ou em conjunto (ou não) para obter dados de imagem codificados 171 que podem ser emitidos pela saída 172, por exemplo, na forma de um fluxo de bits codificado 171.
DECODIFICADOR
[00140] A Figura 3 mostra um decodificador de vídeo exemplar 200 configurado para receber dados de imagem codificados (por exemplo, fluxo de bits codificado) 171, por exemplo, codificado pelo codificador 100, para obter uma imagem decodificada 231.
[00141] O decodificador 200 compreende uma entrada 202, uma unidade de decodificação por entropia 204, uma unidade de quantização inversa 210, uma unidade de transformada inversa 212, uma unidade de reconstrução 214, um armazenamento temporário 216, um filtro de malha 220, um armazenamento temporário de imagem decodificada 230, uma unidade de predição 260, que inclui uma unidade de interpredição 244, uma unidade de intra predição 254 e uma unidade de seleção de modo 260 e uma saída 232.
[00142] A unidade de decodificação por entropia 204 é configurada para realizar a decodificação por entropia para os dados de imagem codificados 171 para obter, por exemplo, coeficientes quantizados 209 e/ou parâmetros de codificação decodificados (não mostrados na Figura 3), por exemplo, (decodificados) qualquer ou todos os parâmetros de interpredição 143, parâmetro de intrapredição 153 e/ou parâmetros de filtro de malha.
[00143] Em modalidades do decodificador 200, a unidade de quantização inversa 210, a unidade de transformada inversa 212, a unidade de reconstrução 214, o armazenamento temporário 216, o filtro de malha 220, o armazenamento temporário de imagem decodificada 230, a unidade de predição 260 e a unidade de seleção de modo 260 são configuradas para realizar o processamento inverso do codificador 100 (e as respectivas unidades funcionais) para decodificar os dados de imagem codificados 171.
[00144] Em particular, a unidade de quantização inversa 210 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de transformada inversa 212 pode ser idêntica em função à unidade de transformada inversa 112, a unidade de reconstrução 214 pode ser idêntica em função à unidade de reconstrução 114, o armazenamento temporário 216 pode ser idêntico em função ao armazenamento temporário 116, o filtro de malha 220 pode ser idêntico em função ao filtro de malha 220 (em relação ao filtro de malha real, uma vez que o filtro de malha 220 tipicamente não compreende uma unidade de análise de filtro para determinar os parâmetros de filtro com base na imagem original 101 ou bloco 103, mas recebe (explicitamente ou implicitamente) ou obtém os parâmetros de filtro usados para codificação, por exemplo, a partir da unidade de decodificação por entropia 204), e o armazenamento temporário de imagem decodificada 230 pode ser idêntico em função ao armazenamento temporário de imagem decodificada 130.
[00145] A unidade de predição 260 pode compreender uma unidade de interpredição 244 e uma unidade de intrapredição 254, em que a unidade de interpredição 244 pode ser idêntica em função à unidade de interpredição 144 e a unidade de intrapredição 254 pode ser idêntica em função à unidade de intrapredição 154. A unidade de predição 260 e a unidade de seleção de modo 262 são tipicamente configuradas para realizar a predição de bloco e/ou obter o bloco predito 265 a partir dos dados codificados 171 apenas (sem quaisquer informações adicionais sobre a imagem original 101) e para receber ou obter (explicitamente ou implicitamente) os parâmetros de predição 143 ou 153 e/ou as informações sobre o modo de predição selecionado, por exemplo, a partir da unidade de decodificação por entropia 204.
[00146] O decodificador 200 é configurado para emitir a imagem decodificada 231, por exemplo, através da saída 232, para apresentação ou visualização para um usuário.
[00147] Com referência à Figura 1, a imagem decodificada 231 que sai do decodificador 200 pode ser pós- processada no pós-processador 326. A imagem pós-processada resultante 327 pode ser transferida para um dispositivo de exibição interno ou externo 328 e exibida.
DETALHES DE MODALIDADES
[00148] A invenção restringe os valores que podem ser assumidos pelos coeficientes de filtro de um filtro multiplicativo adaptativo de tal forma que a operação de multiplicação é simplificada. A filtragem de um conjunto de amostras de sinais de uma imagem utiliza um filtro com coeficientes multiplicadores adaptativos, onde os coeficientes multiplicadores são representados por números inteiros. Dado que o valor mais alto do valor absoluto de um coeficiente C é N, a representação binária de N requer L = ceil (log2(N)) dígitos binários. Em outras palavras, com L dígitos binários, os valores de coeficiente absolutos a partir de zero (L "zeros") a 2L-1 (L "uns") podem ser expressos (o sinal do coeficiente é representado por um bit de sinal separado não discutido aqui). De acordo com a abordagem particular da invenção, este conjunto de valores é restrito de modo que qualquer valor que possa ser assumido pelo coeficiente C inclua no máximo um número P < L de “uns” (“1”) na representação binária. Por exemplo, o caso de todos os “uns” (L “uns”) é excluído.
[00149] Como será mostrado a seguir, quanto menor for o número P de “uns” permitidos, melhor será o ganho de eficiência e o desempenho da operação de filtragem. Por exemplo, o melhor ganho de eficiência pode ser alcançado se qualquer valor que pode ser assumido pelo coeficiente C incluir apenas até um único “1”, ou seja, no máximo um “1”.
[00150] A seguir, modalidades particulares de implementação da invenção serão descritas em detalhes.
[00151] Note que os valores exemplares dos parâmetros dados abaixo são apenas para fins ilustrativos e o especialista está ciente de que eles podem ser substituídos dentro de quaisquer outros valores possíveis que estão dentro do escopo das reivindicações anexas.
[00152] Geralmente, os coeficientes do filtro são implementados usando precisão finita. Um coeficiente de filtro é representado usando L bits, junto com um bit de sinal opcional. A quantidade de bits L depende do valor absoluto máximo do coeficiente. Especificamente, dado que o valor mais alto do valor absoluto de um coeficiente C é N, a representação binária de N requer L = ceil (log2(N)) dígitos binários.
[00153] A função ceil (x), também denotada como ⌈x⌉ ou ceiling(x), mapeia x para o menor número inteiro maior ou igual a x.
[00154] De acordo com uma primeira modalidade exemplar da invenção, no máximo um dos L bits (isto é, excluindo o bit de sinal) de um coeficiente de filtro pode ser “um” (“1”) ao mesmo tempo. Outras possibilidades não são permitidas.
[00155] Por exemplo: suponha que L = 6, e um bit (o bit mais à esquerda) é usado para indicar o sinal do coeficiente.
[00156] Os seguintes coeficientes de filtro são, por exemplo, permitidos: 0 (0000000), 1 (0000001), -1 (1000001), 2 (0000010), -2 (1000010), 4 (0000100), -4 (1000100), 8 (0001000), -8 (1001000), 16 (0010000)..., -32 (1100000).
[00157] Os seguintes coeficientes de filtro são, por exemplo, não permitidos: 3 (0000011), -15 (1001111), 31 (0011111)...
[00158] Neste caso, um benefício é alcançado, pois a restrição permite que a multiplicação possa ser implementada como uma operação de desvio de bit única.
[00159] A operação de desvio de bit pode ser representada matematicamente como: f (X, M) = X * 2M, onde M é um número inteiro maior ou igual a 0. De acordo com uma generalização da modalidade acima, no máximo M de L bits do coeficiente de filtro pode ser “1” ao mesmo tempo. Outras possibilidades não são permitidas.
[00160] Por exemplo: suponha que L = 6, M = 2 e um bit seja usado para indicar o sinal do coeficiente.
[00161] Os seguintes coeficientes de filtro, por exemplo, são permitidos: 0 (0000000), 3 (0000011), 9 (0001001), -4 (10001001), -9 (1001001), 18 (0010010), 33 (0100001)...
[00162] Os seguintes coeficientes de filtro, por exemplo, não são permitidos: 7 (0000111), -19 (1010011), 31 (0011111)...
[00163] Neste caso, a restrição permite que a multiplicação possa ser implementada por duas operações de desvio de bit e uma de adição.
[00164] No caso mais geral delineado acima, com um M < L geral, um benefício é alcançado, uma vez que a restrição permite que a multiplicação seja alcançada por M operações de desvio de bit e M-1 operações de adição.
[00165] Nos exemplos dados acima, é assumido que o conjunto restrito de valores absolutos é aplicado a todos os coeficientes de filtro de uma multiplicação de filtro adaptativo.
[00166] A seguir, uma modalidade exemplar mais complexa será descrita com referência à Figura 7, em que uma restrição de acordo com a invenção é aplicada, mas não a todos os coeficientes de filtro do filtro em consideração.
[00167] No exemplo, em um primeiro passo, os coeficientes são agrupados em dois grupos. No desenho, o primeiro grupo corresponde às posições de coeficiente indicadas por círculos abertos na porção central do filtro e o segundo grupo corresponde às posições de coeficiente indicadas por círculos pretos preenchidos no desenho, na porção periférica do filtro.
[00168] Os coeficientes de filtro no primeiro grupo podem assumir qualquer valor em um intervalo predeterminado. No exemplo ilustrado, assume-se que o intervalo corresponde a um conjunto "S1", em que S1 = [-511,..., 511]. Isso corresponde a um número total de bits (excluindo o bit de sinal) de L = 9.
[00169] Os coeficientes de filtro no segundo grupo podem assumir qualquer valor em um conjunto "S2", em que S2" é um subconjunto de S1. Mais especificamente, em um exemplo, o conjunto S2 é definido como S2 = [-32, -16, -8, -4, -2, - 1,0,1,2,4,8,16,32]. Consequentemente, os valores permitidos no conjunto S2 são restritos àqueles que podem ser representados com um único “1” na representação binária. Além disso, o valor máximo absoluto permitido é restrito a 32, ou seja, assume-se ainda que o número L é restrito a L = 6. Geralmente, é notado que o número L pode ser definido separadamente e de forma diferente para cada grupo. Além disso, o agrupamento específico e a definição dos conjuntos de valores permitidos podem mudar de imagem para imagem (quadro a quadro). Alternativamente, o agrupamento e a definição dos conjuntos podem ser diferentes para os diferentes formatos de filtro (por exemplo, diamante 5x5, diamante 7x7, diamante 9x9 conforme descrito na Figura 5). Como alternativa, o agrupamento e as definições podem ser predefinidos.
[00170] Neste exemplo, o benefício é que em vez da multiplicação de 9 bits, o desvio de 1 bit é empregado para o conjunto S2.
[00171] Os respectivos dados devem ser incluídos no fluxo de bits no codificador e sinalizados para o decodificador de forma que os coeficientes do filtro possam ser determinados corretamente no decodificador também. Obviamente, a aplicação de um conjunto restrito de valores de coeficientes permitidos leva a uma redução da sobrecarga de sinalização e, portanto, a uma codificação mais eficiente, uma vez que menos bits são necessários para representar os coeficientes a serem sinalizados no fluxo de bits.
[00172] Mais especificamente, o valor dos coeficientes de filtro que são aplicados pelo codificador precisa ser codificado e transmitido para o decodificador. No lado de codificador, os valores dos coeficientes do filtro são convertidos em palavras de código binárias (a partir do valor de filtro para a palavra de código) por meio de uma tabela de mapeamento ou função de mapeamento. A mesma operação de mapeamento deve ser aplicada no decodificador (a partir da palavra de código ao valor de coeficiente de filtro) a fim de interpretar os coeficientes de filtro corretamente.
[00173] A função ou tabela de mapeamento pode ser diferente para S1 e S2. As operações de mapeamento de exemplo são fornecidas abaixo para os conjuntos de coeficientes de filtro S1 e S2.
[00174] No exemplo abaixo, S1 é dado por {0,1,..., 511} e S2 é dado por {0,2,4,8,16,32} (os valores absolutos são considerados apenas). S1 S2 Valor de palavra-código Valor de palavra-código coeficiente coeficiente de filtro de filtro 0 000000000 0 000 1 000000001 2 001 2 000000010 4 010 3 000000011 8 011 4 000000100 16 100 5 000000101 32 101 6 000000110 ...
[00175] As operações de mapeamento diretas (no codificador) e inversas (no decodificador) precisam ser empregadas no codificador e no decodificador para que o decodificador possa interpretar corretamente os valores de coeficiente de filtro. No exemplo acima, a operação de mapeamento de coeficiente de filtro é diferente para S2 e S1, uma vez que o número de valores distintos em S2 é muito menor e é um desperdício representar os coeficientes de filtro de S2 usando o mapeamento de S1. Portanto, a invenção leva a uma redução da sobrecarga de sinalização e, portanto, a uma codificação mais eficiente, uma vez que menos bits são necessários para representar os coeficientes a serem sinalizados no fluxo de bits.
[00176] A seguir, uma visão geral da sinalização de coeficientes de filtro será dada com referência à Figura 8. A Figura 8 A ilustra o processamento no lado de codificador e a Figura 8B ilustra o processamento no lado de decodificador.
[00177] No codificador, os coeficientes de filtro a serem aplicados nas amostras reconstruídas são determinados de acordo com os valores de coeficiente permitidos conforme determinado pela abordagem particular da invenção (passo S80).
[00178] Os coeficientes de filtro determinados são usados para filtrar as amostras de imagens reconstruídas (passo S82). De acordo com a invenção, os coeficientes de filtro que são aplicados nas amostras de imagens reconstruídas precisam obedecer às regras estabelecidas de acordo com a invenção.
[00179] O seguinte passo de predição dos coeficientes de filtro (passo S84) é opcional. A predição de coeficiente de filtro pode ser aplicada opcionalmente a fim de reduzir as informações a serem sinalizadas para o decodificador. Os métodos de predição possíveis são predição usando preditores de filtro predefinidos e predição a partir de coeficientes de filtro previamente sinalizados. No entanto, os métodos de predição não estão limitados a estes dados aqui por exemplo, e qualquer método de predição adequado que um especialista esteja ciente pode ser aplicado.
[00180] No passo seguinte (S86), é realizado um mapeamento dos coeficientes residuais para palavras de código binárias. Uma vez que o passo de predição anterior S84 é opcional, deve ser notado que, alternativamente, o mapeamento é aplicado diretamente aos coeficientes de filtro determinados no passo S80.
[00181] Mais especificamente, cada coeficiente de filtro de valor inteiro (resíduo de coeficiente de filtro) é convertido em uma palavra de código binária antes de ser incluído no fluxo de bits. Existem tantas palavras de código quanto possíveis valores de coeficiente de filtro (valores residuais de coeficiente de filtro). A palavra de código para mapeamento de valor (que é um mapeamento um-para-um) pode ser um mapeamento fixo ou pode mudar dependendo das informações secundárias sinalizadas.
[00182] No passo final S88, os coeficientes de filtro binarizados (opcionalmente residuais), isto é, as palavras de código às quais eles foram mapeados, são incluídos no fluxo de bits. No caso de a predição ser realizada no passo S84, é ainda necessário gerar uma informação de controle de predição e incluir a referida informação de controle de predição no fluxo de bits, a fim de sinalizar ao decodificador as informações necessárias sobre o processamento de predição, de modo a ser capaz de realizar a reconstrução.
[00183] Geralmente, as operações aplicadas no codificador são aplicadas no decodificador na ordem inversa. Isto será explicado em mais detalhes abaixo com referência à Figura 8B.
[00184] No passo inicial S90, um fluxo de bits recebido é analisado. Os coeficientes de filtro binarizados resultantes (isto é, palavras de código transmitidas) estão opcionalmente representando coeficientes de filtro residuais (se a predição foi aplicada no lado de codificador). Isso é indicado pela obtenção adicional de informações de controle de predição a partir do fluxo de bits analisado.
[00185] Em qualquer caso, as palavras de código binárias são mapeadas por um procedimento de mapeamento inverso (em comparação com o codificador) para os coeficientes de filtro (ou coeficientes de filtro residuais) no passo S92.
[00186] Como resultado, os coeficientes de filtro são determinados (reconstruídos) no lado de decodificador (passo S94). Se a predição foi aplicada, de modo que os coeficientes de filtro resultantes do passo S92 sejam coeficientes de filtro residuais, a reconstrução inclui adicionalmente realizar a predição conforme indicado pelas informações de controle de predição e adicionar o resultado de predição aos coeficientes de filtro residuais, a fim de obter os coeficientes de filtro reconstruídos.
[00187] Após os coeficientes de filtro serem reconstruídos (se aplicável, combinando as informações de preditor e os resíduos de filtro), eles são aplicados nas amostras de imagem reconstruídas (passo S96).
[00188] De acordo com a invenção, os coeficientes de filtro que são aplicados nas amostras de imagem reconstruídas precisam obedecer às regras definidas de acordo com a invenção.
[00189] Consequentemente, se um coeficiente de filtro resultante da reconstrução (em particular: a partir da combinação de predição e resultados residuais) não tiver um valor de coeficiente de filtro permitido de acordo com as regras da invenção (um valor de coeficiente de filtro que não está entre o conjunto de valores permitidos), o processo de reconstrução de coeficientes de filtro realiza ainda uma operação de arredondamento. Especificamente, a operação de arredondamento pode converter o valor de coeficiente de filtro de entrada para o valor de coeficiente permitido mais próximo.
[00190] Se a predição de coeficiente de filtro for aplicada, os coeficientes de filtro a serem aplicados nas amostras de imagem reconstruídas para fins de filtragem são obtidos adicionando o resultado da predição ("preditor") e os coeficientes de filtro residuais (conforme explicado nos parágrafos anteriores a partir das perspectivas de codificador e decodificador). Obviamente, é possível que os coeficientes de filtro residuais possam não existir (iguais a 0), especialmente se a predição estiver próxima da perfeita (os coeficientes de filtro a serem preditos são muito semelhantes ao preditor). Neste caso, de acordo com a invenção, uma das 2 opções a seguir se aplica: os valores de coeficiente obtidos por predição devem obedecer às regras definidas de acordo com a invenção. Por exemplo, no caso de predição a partir de filtros predefinidos, os coeficientes de filtro de filtros predefinidos precisam obedecer às regras definidas de acordo com a invenção; os coeficientes de filtro que são obtidos após a predição precisam ser arredondados para o valor de coeficiente permitido mais próximo.
[00191] É ainda notado que a divisão em uma série de dois grupos foi explicada aqui apenas para simplificar, mas mais de dois grupos também são possíveis, em que para pelo menos um grupo o conjunto de valores permitidos é determinado de acordo com a invenção, ou seja, inclui apenas um número limitado de “uns” dentro de um número geral predeterminado de dígitos binários.
[00192] Por exemplo, a Figura 9 ilustra um caso em que os coeficientes do filtro são agrupados em três grupos.
[00193] Um primeiro grupo de coeficientes posicionado próximo ao centro do núcleo de filtro permitiu valores de coeficiente de filtro no conjunto S1 = [-511,..., 511].
[00194] Um segundo grupo de coeficientes de filtro, localizado na periferia do núcleo e indicado por círculos quebrados, permite que os valores de coeficiente de filtro estejam dentro de um conjunto restrito S2 modificado, em que S2 aqui é S2 = [-128, -64, -32, -16, -8, -4, -2, - 1,0,1,2,4,8,16,32,64,128]. Este é o conjunto de todos os valores de coeficiente que podem ser representados com L = 8 dígitos binários, com apenas um único “um”.
[00195] Um terceiro grupo de coeficientes de filtro, localizado entre o primeiro e o segundo grupos, e indicado por círculos preenchidos, permite que os valores de coeficiente de filtro estejam dentro de outro conjunto restrito S3, em que S3 = [-64, -48, -40,..., 0,1,2,3,4,5,6,8,9,10,12,16,17,18,20,24,32,33, 34,36,40,48,64].
[00196] Em outras palavras, o conjunto S3 é o conjunto de todos os coeficientes que podem ser representados com L
= 7 dígitos binários, em que no máximo dois dos bits são “um” no valor absoluto do coeficiente, e a restrição adicional é aplicada que o valor absoluto máximo é definido como 64. (Caso contrário, por exemplo, também o valor absoluto 96 deve ser permitido, uma vez que pode ser expresso com dois “uns” à esquerda em 7 dígitos binários.)
[00197] A seguir, o benefício particular da invenção será descrito por meio de outra modalidade exemplar ilustrada na Figura 10.
[00198] No exemplo da Figura 10, o agrupamento é realizado da mesma maneira que na Figura 7.
[00199] Os coeficientes de filtro no primeiro grupo podem assumir quaisquer valores com intervalo completo de nove bits e um bit de sinal, ou seja, o conjunto acima mencionado S1 = [-511, 511].
[00200] Os coeficientes de filtro no segundo grupo podem assumir um conjunto restrito de valores S2, em que S2 aqui é S2 = [-128, -64, -32, -16, -8, -4, -2, -1,0,1, 2,4,8,16,32,64,128]. Isso corresponde aos valores que podem ser representados com um único “1” na representação binária. Além disso, o valor máximo absoluto permitido é restrito a 128, ou seja, assume-se ainda que o número L está restrito a L = 8.
[00201] Em outras palavras, o tamanho de filtro corresponde ao que foi mostrado na Figura 4, ou seja, um filtro em forma de diamante 9 × 9. Como foi indicado na seção de fundamentos, 41 multiplicações convencionalmente requeridas com coeficientes de filtro de 9 bits são requeridas. Uma vez que uma multiplicação é equivalente a 8 adições binárias, conforme mencionado na seção de fundamentos, o número de operações adicionais por pixel é 48 * 8 = 328 operações de adição.
[00202] De acordo com a invenção, os 28 coeficientes periféricos (isto é, aqueles no segundo grupo) podem ser implementados como uma operação de desvio de bit única. A implementação da operação de desvio de bit é de complexidade muito pequena no hardware e pode, portanto, ser omitida no cálculo.
[00203] Treze operações de multiplicação com coeficientes de 9 bits equivalem a 13 * 8 = 104 adições por pixel. O número de operações por pixel é reduzido em 68%.
[00204] Os números acima são estimativas aproximadas e o valor exato da redução na complexidade depende da implementação real.
[00205] A seguir, um benefício adicional de implementações usando pelo menos dois grupos de coeficientes é explicado.
[00206] De acordo com a invenção, nem todos os coeficientes de filtro são quantizados grosseiramente, e os coeficientes de filtro no primeiro grupo têm uma quantização mais fina.
[00207] Normalmente, a quantização grosseira dos coeficientes de filtro causa a perda de codificação. No entanto, ter o primeiro grupo de coeficientes de filtro permitido para assumir um grande conjunto de valores pode ser usado para compensar a perda de codificação pelo codificador.
[00208] Uma possível implementação de codificador é a seguinte. Na descrição a seguir, os rótulos de coeficiente de filtro usados são aqueles indicados na Figura 11, que podem diferir dos rótulos usados anteriormente em conexão com outros desenhos: Passo 1: Derive todos os coeficientes de filtro (C0,..., C20) usando o método dos mínimos quadrados, assumindo nenhuma restrição nos valores dos coeficientes; Passo 2: Imponha a restrição arredondando os coeficientes (C7,..., C20) para o valor permitido mais próximo; este passo introduz ruído de quantização nos coeficientes de filtro e, portanto, reduz o ganho de codificação; Passo 3: Re-estimar os coeficientes de filtro livremente selecionáveis (C0,..., C6) para compensar os erros de quantização. Neste terceiro passo, a maior parte da perda de codificação introduzida no passo 2 pode ser recuperada.
[00209] Em mais detalhes: no primeiro passo, a equação fornecida abaixo é resolvida para o filtro 41 derivações (com 21 coeficientes únicos): X , X , ⋯ X , C ⋮ ⋱ ⋮ ⋮ X , X , X , C = ⋯ C X , X , X ,
[00210] A equação acima é chamada de equação dos mínimos quadrados e é usada para encontrar os coeficientes de filtro Cx no codificador.
[00211] O termo é o valor esperado de R(i + k, j + l) ∗ R(i + m, j + n), a correlação entre as 2 amostras reconstruídas antes da filtragem. Os índices k, l, m e n são selecionados de acordo com a forma do filtro a ser aplicado.
[00212] O termo Px denota o valor esperado de R(i + k, j + l) ∗ O(i, j).
[00213] No segundo passo, para os coeficientes de filtro C7 a C20, os coeficientes aproximados mais próximos são encontrados que satisfazem as restrições: C C′ ⋮ ⋮ f C = C′ C C′
[00214] Os coeficientes C7' a C20' obedecem às regras especificadas pela invenção. Observe que a função f () descrita acima introduz ruído de quantização para os coeficientes de filtro C7 a C20 que foram obtidos anteriormente resolvendo a equação dos mínimos quadrados.
[00215] Espera-se que o ruído de quantização introduzido no segundo passo reduza o desempenho da operação de filtragem. O desempenho da filtragem é geralmente medido por uma métrica como a relação sinal-ruído de pico (Peak signal-to-noise ratio, PSNR), portanto, após o passo 2, o PSNR da imagem filtrada será reduzido.
[00216] No terceiro passo, a equação abaixo é resolvida para um filtro de 13 derivações (com 7 coeficientes únicos): X , X , ⋯ X , C 𝑃 −𝐶 ∗ 𝑋 , − ⋯− 𝐶 ∗𝑋 , ⎡ ⎤ ⋮ ⋱ ⋮ ⋮ ⋮ X X X , C = ⎢𝑃 − 𝐶 ∗ 𝑋 − ⋯ − 𝐶 ∗𝑋 , ⎥ , , ⋯ ⎢ , ⎥ X , X , X , C ⎣𝑃 − 𝐶 ∗ 𝑋 , − ⋯ − 𝐶 ∗𝑋 , ⎦
[00217] No terceiro passo, os coeficientes de filtragem C0 a C7 são calculados novamente levando em consideração o ruído de quantização introduzido no segundo passo. O terceiro passo reduz vantajosamente a redução no desempenho de filtragem que é causada pela aplicação do passo
2.
[00218] Nota-se que, em geral, a aplicação da operação de filtragem com coeficientes de filtro multiplicativos adaptativos não se limita a amostras de imagens reconstruídas. Conforme descrito nas figuras 2 e 3, o bloco reconstruído geralmente corresponde ao bloco de imagem que é obtido após a combinação de bloco transformado inverso e bloco de predição. Como é evidente para os versados na técnica, a operação de filtragem com coeficientes de filtragem adaptativos também pode ser aplicada nos outros passos das operações de codificação e decodificação, por exemplo, ao bloco de predição (265, 165), bloco transformado inverso (213, 113) coeficientes quantizados (209, 109), coeficientes não quantizados (111, 211) ou imagem decodificada (231). Neste caso, a invenção se aplica aos coeficientes de filtro da operação de filtragem.
[00219] Em resumo, a invenção se refere a um aparelho e método aprimorados para filtrar imagens reconstruídas, em particular, imagens de vídeo, com filtros multiplicativos adaptativos. A eficiência da operação de filtragem é aumentada restringindo os valores permitidos dos coeficientes de filtro àqueles que têm apenas um número limitado de “uns” na representação binária.
[00220] Observe que este relatório descritivo fornece explicações para imagens (quadros), mas os campos substituem como imagens no caso de um sinal de imagem entrelaçado.
[00221] Embora as modalidades da invenção tenham sido descritas principalmente com base na codificação de vídeo, deve ser notado que as modalidades do codificador 100 e do decodificador 200 (e, correspondentemente, o sistema 300) também podem ser configuradas para processamento ou codificação de imagem estática, ou seja, o processamento ou codificação de uma imagem individual independente de qualquer imagem anterior ou consecutiva como na codificação de vídeo. Em geral, apenas a interestimativa 142, a interpredição 144, 242 não estão disponíveis no caso de a codificação de processamento de imagem ser limitada a uma única imagem 101. A maioria, senão todas as outras funcionalidades (também referidas como ferramentas ou tecnologias) do codificador de vídeo 100 e decodificador de vídeo 200 podem igualmente ser usadas para imagens estáticas, por exemplo, particionamento, transformação (escalonamento) 106, quantização 108, quantização inversa 110, transformada inversa 112, intraestimativa 142, intrapredição 154, 254 e/ou filtragem de malha 120, 220 e codificação por entropia 170 e decodificação por entropia 204.
[00222] Sempre que as modalidades e a descrição se referem ao termo "memória", o termo "memória" deve ser entendido e/ou deve compreender um disco magnético, um disco ótico, uma unidade de estado sólido (solid state drive, SSD), uma unidade de memória somente de leitura (Read-Only Memory, ROM), uma memória de acesso aleatório (Random Access Memory, RAM), uma unidade flash USB ou qualquer outro tipo de memória adequado, a menos que explicitamente declarado o contrário.
[00223] Sempre que as modalidades e a descrição se referem ao termo "rede", o termo "rede" deve ser entendido e/ou deve compreender qualquer tipo de rede sem fio ou com fio, como Rede de área local (Local Area Network, LAN), LAN sem fio (Wireless LAN, WLAN), Rede de Área Ampla (Wide Area Network, WAN), uma Ethernet, a Internet, redes móveis, etc., a menos que seja explicitamente declarado o contrário.
[00224] O versado na técnica entenderá que os "blocos" ("unidades" ou "módulos") das várias figuras (método e aparelho) representam ou descrevem funcionalidades de modalidades da invenção (em vez de necessariamente "unidades" individuais em hardware ou software) e, assim, descrevem igualmente funções ou recursos de modalidades de aparelho, bem como modalidades de método (unidade = passo).
[00225] A terminologia de "unidades" é usada apenas para fins ilustrativos da funcionalidade de modalidades do codificador/decodificador e não se destina a limitar a divulgação.
[00226] Nas várias modalidades fornecidas no presente pedido, deve ser entendido que o sistema, aparelho e método divulgados podem ser implementados de outras maneiras. Por exemplo, a modalidade de aparelho descrita é meramente exemplificativa. Por exemplo, a divisão de unidade é meramente uma divisão de função lógica e pode ser outra divisão em uma implementação real. Por exemplo, uma pluralidade de unidades ou componentes pode ser combinada ou integrada em outro sistema, ou alguns recursos podem ser ignorados ou não executados. Além disso, os acoplamentos mútuos ou acoplamentos diretos ou conexões de comunicação exibidos ou discutidos podem ser implementados usando algumas interfaces. Os acoplamentos indiretos ou conexões de comunicação entre os aparelhos ou unidades podem ser implementados em formas eletrônicas, mecânicas ou outras.
[00227] As unidades descritas como partes separadas podem ou não ser fisicamente separadas, e as partes exibidas como unidades podem ou não ser unidades físicas, podem estar localizadas em uma posição ou podem ser distribuídas em uma pluralidade de unidades de rede. Algumas ou todas as unidades podem ser selecionadas de acordo com as necessidades reais para atingir os objetivos das soluções das modalidades.
[00228] Além disso, as unidades funcionais nas modalidades da invenção podem ser integradas em uma unidade de processamento, ou cada uma das unidades pode existir sozinha fisicamente, ou duas ou mais unidades são integradas em uma unidade.
[00229] As modalidades da invenção podem compreender ainda um aparelho, por exemplo, codificador e/ou decodificador, que compreende circuitos de processamento configurados para realizar qualquer um dos métodos e/ou processos aqui descritos.
[00230] As modalidades do codificador 100 e/ou decodificador 200 podem ser implementadas como hardware, firmware, software ou qualquer combinação dos mesmos. Por exemplo, a funcionalidade do codificador/codificação ou decodificador/decodificação pode ser realizada por circuitos de processamento com ou sem firmware ou software, por exemplo, um processador, um microcontrolador, um processador de sinal digital (digital signal processor, DSP), um arranjo de portas de campo programável (field programmable gate array, FPGA), um circuito integrado de aplicação específica (application-specific integrated circuit, ASIC) ou semelhantes.
[00231] A funcionalidade do codificador 100 (e método de codificação correspondente 100) e/ou decodificador 200 (e método de decodificação correspondente 200) pode ser implementada por instruções de programa armazenadas em um meio legível por computador. As instruções de programa, quando executadas, fazem com que um circuito de processamento, computador, processador ou semelhantes,
realizem os passos dos métodos de codificação e/ou decodificação. O meio legível por computador pode ser qualquer meio, incluindo mídia de armazenamento não transitória, na qual o programa é armazenado, como um disco Blu ray, DVD, CD, unidade USB (flash), disco rígido, armazenamento de servidor disponível através de uma rede, etc.
[00232] Uma modalidade da invenção compreende ou é um programa de computador compreendendo código de programa para realizar qualquer um dos métodos aqui descritos, quando executado em um computador.
[00233] Uma modalidade da invenção compreende ou é um meio legível por computador que compreende um código de programa que, quando executado por um processador, faz com que um sistema de computador execute qualquer um dos métodos descritos neste documento.
[00234] Uma modalidade da invenção compreende ou é um conjunto de chips executando qualquer um dos métodos aqui descritos.
LISTA DE SINAIS DE REFERÊNCIA 100 Codificador 102 Entrada (por exemplo, porta de entrada, interface de entrada) 103 Bloco de imagem 104 Cálculo residual [unidade ou passo] 105 Bloco residual 106 Transformação (por exemplo, adicionalmente compreendendo escalonamento) [unidade ou passo] 107 Coeficientes transformados 108 Quantização [unidade ou passo]
109 Coeficientes quantizados 110 Quantização inversa [unidade ou passo] 111 Coeficientes desquantizados 112 Transformação inversa (por exemplo, adicionalmente compreendendo escalonamento) [unidade ou passo] 113 Bloco transformado inverso 114 Reconstrução [unidade ou passo] 115 Bloco reconstruído 116 (linha) armazenamento temporário [unidade ou passo] 117 Amostras de referência 120 Filtro de malha [unidade ou passo] 121 Bloco filtrado 130 Armazenamento temporário de imagem decodificada (Decoded picture buffer, DPB) [unidade ou passo] 142 Interestimativa (ou interestimativa de imagem) [unidade ou passo] 143 Parâmetros de interestimativa (por exemplo, imagem de referência/índice de imagem de referência, vetor de movimento/deslocamento) 144 Interpredição (ou interpredição de imagem) [unidade ou passo] 145 Bloco de interpredição 152 Intraestimativa (ou intraestimativa de imagem) [unidade ou passo] 153 Parâmetros de intrapredição (por exemplo, modo de intrapredição) 154 Intrapredição (intrapredição de quadro/imagem) [unidade ou passo] 155 Bloco de intrapredição 162 Seleção de modo [unidade ou passo]
165 Bloco de predição (ou bloco de interpredição 145 ou bloco de intrapredição 155) 170 Codificação de entropia [unidade ou passo] 171 Dados de imagem codificados (por exemplo, fluxo de bits) 172 Saída (porta de saída, interface de saída) 200 Decodificador 202 Entrada (porta/interface) 204 Decodificação por entropia 209 Coeficientes quantizados 210 Quantização inversa 211 Coeficientes desquantizados 212 Transformação inversa (escalonamento) 213 Bloco transformado inverso 214 Reconstrução (unidade) 215 Bloco reconstruído 216 Armazenamento temporário (linha) 217 Amostras de referência 220 Filtro de malha (no filtro de malha) 221 Bloco filtrado 230 Armazenamento temporário de imagem decodificada (Decoded picture buffer, DPB) 231 Imagem decodificada 232 Saída (porta/interface) 244 interpredição (interpredição de quadro/imagem) 245 Bloco de interpredição 254 Intrapredição (intrapredição de quadro/imagem) 255 Bloco de intrapredição 260 Seleção de modo 265 Bloco de predição (bloco de interpredição 245 ou bloco de intrapredição 255) 300 Sistema de codificação 310 Dispositivo de fonte 312 Fonte de imagem 313 Dados de imagem (brutos) 314 Pré-processador/Unidade de pré-processamento 315 Dados de imagem pré-processados 318 Unidade/interface de comunicação 320 Dispositivo de destino 322 Unidade/interface de comunicação 326 Pós-processador/Unidade de pós-processamento 327 Dados de imagem pós-processados 328 Dispositivo/unidade de exibição 330 Dados de imagem transmitidos/recebidos/comunicados (codificados)

Claims (15)

REIVINDICAÇÕES EMENDADAS
1. Aparelho para filtrar um conjunto de amostras (115; 215) de uma imagem usando um filtro (120; 220) com coeficientes multiplicadores adaptativos representados por números inteiros, caracterizado pelo fato de que o aparelho compreende circuitos de processamento que são configurados para determinar o valor de pelo menos um coeficiente multiplicador do filtro (120; 220) de modo a estar dentro de um conjunto de valores permitidos de modo que a representação binária do valor absoluto do referido pelo menos um coeficiente multiplicador com um número predeterminado L de dígitos inclui pelo menos um “zero”, e filtrar o conjunto de amostras (115; 215) de uma imagem com o filtro (120; 220).
2. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que o valor absoluto mais alto do conjunto é restrito a um valor máximo predeterminado Nmax.
3. Aparelho, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que a representação binária do valor absoluto do referido pelo menos um coeficiente multiplicador inclui no máximo dois "uns", e em que a representação binária do valor absoluto do referido pelo menos um coeficiente multiplicador inclui no máximo um “um”.
4. Aparelho, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que todos os coeficientes multiplicadores do filtro (120; 220) são determinados como estando dentro do referido conjunto de valores permitidos.
5. Aparelho, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que os circuitos de processamento são ainda configurados para agrupar os coeficientes multiplicadores do referido filtro (120; 220) em pelo menos dois grupos, e os coeficientes multiplicadores de um dos grupos restringem-se ao referido conjunto de valores permitidos; e em que os coeficientes multiplicadores de outro dos referidos grupos podem assumir todos os valores dentro de um intervalo definido por um máximo predeterminado do valor absoluto.
6. Aparelho, de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que o conjunto de amostras de uma imagem é um conjunto de amostras (115; 215) de uma imagem de vídeo.
7. Aparelho, de acordo com a reivindicação 6, caracterizado pelo fato de que o referido aparelho é configurado para adaptar individualmente os coeficientes multiplicadores para cada imagem e cada pixel.
8. Método para filtrar um conjunto de amostras (115; 215) de uma imagem usando um filtro (120; 220) com coeficientes multiplicadores adaptativos representados por números inteiros, caracterizado pelo fato de que o método que compreende os passos de determinar (S80; S92, S94) o valor de pelo menos um coeficiente multiplicador do filtro (120; 220) de modo a estar dentro de um conjunto de valores permitidos de modo que a representação binária do valor absoluto do referido pelo menos um coeficiente multiplicador com um número predeterminado L de dígitos inclui pelo menos um "zero", e filtrar (S82; S96) o conjunto de amostras (115; 215) de uma imagem com o filtro (120; 220).
9. Aparelho para codificar um conjunto atual de amostras (103) de uma imagem incluindo uma pluralidade de pixels, caracterizado pelo fato de que o aparelho compreende: um codificador com um decodificador (110, 112, 114) para reconstruir o conjunto atual, e o aparelho, de acordo com qualquer uma das reivindicações 1 a 7, para filtrar o conjunto reconstruído (115).
10. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende ainda circuitos de processamento que são configurados para mapear os valores dos coeficientes multiplicadores para palavras de código binárias; e incluir as palavras de código em um fluxo de bits (330) para serem transmitidas a um aparelho de decodificação (200); em que o comprimento das referidas palavras de código depende do número de valores de coeficiente multiplicador distintos.
11. Aparelho, de acordo com a reivindicação 10, caracterizado pelo fato de que os circuitos de processamento são ainda configurados para realizar uma predição dos coeficientes multiplicadores do filtro (120); e determinar coeficientes multiplicadores residuais comparando os valores realmente determinados com os valores preditos resultantes da predição, em que o mapeamento para palavras de código binárias é aplicado aos coeficientes multiplicadores residuais; em que os circuitos de processamento são ainda configurados para gerar informações de controle de predição e incluir as informações de controle de predição no fluxo de bits (330).
12. Aparelho para decodificar um conjunto atual codificado de amostras (171) de uma imagem incluindo uma pluralidade de pixels, caracterizado pelo fato de que o aparelho compreende: um decodificador (204, 210, 212, 214) para reconstruir o conjunto atual, e o aparelho, de acordo com qualquer uma das reivindicações, 1 a 7 para filtrar o conjunto reconstruído (215).
13. Aparelho, de acordo com a reivindicação 12, caracterizado pelo fato de que os referidos circuitos de processamento são ainda configurados para obter coeficientes multiplicadores a partir de palavras de código binárias incluídas em um fluxo de bits recebido (330) aplicando uma operação de mapeamento; em que os referidos coeficientes multiplicadores obtidos são coeficientes multiplicadores residuais que representam uma diferença entre os valores de coeficiente reais e os coeficientes multiplicadores previstos de acordo com um esquema de predição; e os circuitos de processamento são configurados para determinar os valores dos coeficientes multiplicadores do filtro (220) reconstruindo-os a partir dos coeficientes multiplicadores residuais obtidos.
14. Aparelho, de acordo com a reivindicação 13, caracterizado pelo fato de que o esquema de predição é indicado pelas informações de controle de predição incluídas adicionalmente no fluxo de bits recebido (330); e os circuitos de processamento são configurados para usar adicionalmente as informações de controle de predição na reconstrução.
15. Aparelho, de acordo com a reivindicação 13 ou 14, caracterizado pelo fato de que a determinação pelos circuitos de processamento inclui ainda realizar uma determinação quanto a se o valor determinado do pelo menos um coeficiente multiplicador, obtido diretamente a partir do fluxo de bits recebido (330) pela operação de mapeamento ou por reconstrução a partir dos coeficientes multiplicadores residuais obtidos, estão dentro do conjunto de valores permitidos; e se não, converter o valor determinado para um valor mais próximo que esteja dentro do conjunto de valores permitidos.
BR112020018410-1A 2018-03-09 2018-03-29 Método e aparelho para filtragem de imagem com coeficientes multiplicadores adaptivos BR112020018410A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP2018055979 2018-03-09
EPPCT/EP2018/055979 2018-03-09
PCT/EP2018/058090 WO2019170258A1 (en) 2018-03-09 2018-03-29 Method and apparatus for image filtering with adaptive multiplier coefficients

Publications (1)

Publication Number Publication Date
BR112020018410A2 true BR112020018410A2 (pt) 2020-12-22

Family

ID=61800553

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020018410-1A BR112020018410A2 (pt) 2018-03-09 2018-03-29 Método e aparelho para filtragem de imagem com coeficientes multiplicadores adaptivos

Country Status (14)

Country Link
US (3) US11265538B2 (pt)
EP (2) EP3756346B1 (pt)
JP (3) JP7124100B2 (pt)
KR (3) KR20220153105A (pt)
CN (3) CN114125444B (pt)
AU (2) AU2018412414B2 (pt)
BR (1) BR112020018410A2 (pt)
CA (1) CA3092900A1 (pt)
ES (1) ES2905572T3 (pt)
HU (1) HUE057655T2 (pt)
MX (1) MX2020009369A (pt)
PL (1) PL3756346T3 (pt)
PT (1) PT3756346T (pt)
WO (1) WO2019170258A1 (pt)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11467582B2 (en) 2018-11-05 2022-10-11 Usic, Llc Systems and methods for an autonomous marking apparatus
US11366473B2 (en) 2018-11-05 2022-06-21 Usic, Llc Systems and methods for autonomous marking identification
WO2020262988A1 (ko) * 2019-06-25 2020-12-30 엘지전자 주식회사 영상 코딩 시스템에서 무손실 코딩을 적용하는 영상 디코딩 방법 및 그 장치

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200501565A (en) * 2003-05-15 2005-01-01 Neuro Solution Corp Digital filter and design method, design apparatus, and digital filter design program thereof
CN1964490A (zh) * 2005-11-09 2007-05-16 松下电器产业株式会社 一种滤波器及滤波方法
EP2048886A1 (en) * 2007-10-11 2009-04-15 Panasonic Corporation Coding of adaptive interpolation filter coefficients
KR20100074272A (ko) * 2007-10-14 2010-07-01 노키아 코포레이션 높은 코딩 효율을 갖는 적응 이미지 필터의 고정 소수점 구현
CN101163246B (zh) * 2007-11-30 2010-06-23 北京航空航天大学 一种数字电视多媒体广播传输系统激励器
US8805100B2 (en) * 2010-06-03 2014-08-12 Sharp Kabushiki Kaisha Filter device, image decoding device, image encoding device, and filter parameter data structure
JP5685908B2 (ja) * 2010-11-30 2015-03-18 富士通株式会社 ループフィルタ
US8917950B2 (en) * 2011-01-18 2014-12-23 Sony Corporation Simplifying parametric loop filters
CN102857751B (zh) * 2011-07-01 2015-01-21 华为技术有限公司 一种视频编解码方法和装置
US20140198840A1 (en) * 2011-08-31 2014-07-17 New Motech Co., Ltd. Method and apparatus for adaptive loop filter with constrained filter coefficients
US10129540B2 (en) * 2012-04-10 2018-11-13 Texas Instruments Incorporated Reduced complexity coefficient transmission for adaptive loop filtering (ALF) in video coding
US20140010278A1 (en) * 2012-07-09 2014-01-09 Motorola Mobility Llc Method and apparatus for coding adaptive-loop filter coefficients
US9047665B2 (en) * 2013-08-21 2015-06-02 Panasonic Intellectual Property Management Co., Ltd. Image processing apparatus
CN103700072A (zh) * 2013-12-17 2014-04-02 北京工业大学 一种基于自适应小波阈值和双边滤波器的图像去噪方法
US10057574B2 (en) * 2015-02-11 2018-08-21 Qualcomm Incorporated Coding tree unit (CTU) level adaptive loop filter (ALF)
CN104734668B (zh) * 2015-03-31 2017-11-07 中国科学院微电子研究所 一种插值滤波器
CN105808206B (zh) * 2016-03-04 2019-01-08 广州海格通信集团股份有限公司 基于ram实现乘法运算的方法及其系统
JP7094076B2 (ja) * 2016-08-19 2022-07-01 沖電気工業株式会社 映像符号化装置、プログラム及び方法、並びに、映像復号装置、プログラム及び方法、並びに、映像伝送システム
CN107295353B (zh) * 2017-08-15 2019-12-31 电子科技大学 视频编码参考块滤波方法

Also Published As

Publication number Publication date
US11265538B2 (en) 2022-03-01
JP7124100B2 (ja) 2022-08-23
CN114125444B (zh) 2022-10-11
ES2905572T3 (es) 2022-04-11
CN114125444A (zh) 2022-03-01
MX2020009369A (es) 2020-12-11
US20230388493A1 (en) 2023-11-30
WO2019170258A1 (en) 2019-09-12
JP2024020330A (ja) 2024-02-14
EP3756346A1 (en) 2020-12-30
KR102464520B1 (ko) 2022-11-07
EP4037315A1 (en) 2022-08-03
CN111869208A (zh) 2020-10-30
KR20200123826A (ko) 2020-10-30
RU2020133183A3 (pt) 2022-04-11
AU2023214322A1 (en) 2023-08-31
HUE057655T2 (hu) 2022-06-28
CA3092900A1 (en) 2019-09-12
KR20240040128A (ko) 2024-03-27
PL3756346T3 (pl) 2022-02-21
AU2018412414B2 (en) 2023-05-11
US20220224895A1 (en) 2022-07-14
EP3756346B1 (en) 2021-12-29
US11765351B2 (en) 2023-09-19
CN113965765A (zh) 2022-01-21
JP2021515494A (ja) 2021-06-17
KR20220153105A (ko) 2022-11-17
US20200413054A1 (en) 2020-12-31
RU2020133183A (ru) 2022-04-11
AU2018412414A1 (en) 2020-10-15
JP7384974B2 (ja) 2023-11-21
PT3756346T (pt) 2022-02-03
CN111869208B (zh) 2021-10-26
JP2022172137A (ja) 2022-11-15

Similar Documents

Publication Publication Date Title
JP7381660B2 (ja) 符号化方法及び機器
US20130271565A1 (en) View synthesis based on asymmetric texture and depth resolutions
TW201722157A (zh) 視訊寫碼中之彈性轉換樹結構
US11533480B2 (en) Method and apparatus for image filtering with adaptive multiplier coefficients
JP7384974B2 (ja) 適応乗算係数を用いた画像フィルタリングのための方法および装置
BR112020026248A2 (pt) Dispositivo e método para intrapredição de um bloco de predição de uma imagem de vídeo, e meio de armazenamento
BR112020019587A2 (pt) Dispositivo de processamento de imagem e método para realizar desbloqueio eficiente
JP2023509513A (ja) 点群コーディングにおけるカメラパラメータのシグナリング
BR112020026879A2 (pt) Dispositivo e método para intra predição
RU2772313C2 (ru) Способ и устройство для фильтрации изображений с адаптивными коэффициентами множителя

Legal Events

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