BR112021000657A2 - Método e aparelho de filtragem de interpolação para codificação preditiva, codificador, decodificador e produto de programa de computador - Google Patents

Método e aparelho de filtragem de interpolação para codificação preditiva, codificador, decodificador e produto de programa de computador Download PDF

Info

Publication number
BR112021000657A2
BR112021000657A2 BR112021000657-5A BR112021000657A BR112021000657A2 BR 112021000657 A2 BR112021000657 A2 BR 112021000657A2 BR 112021000657 A BR112021000657 A BR 112021000657A BR 112021000657 A2 BR112021000657 A2 BR 112021000657A2
Authority
BR
Brazil
Prior art keywords
filter
prediction
sub
coefficients
video
Prior art date
Application number
BR112021000657-5A
Other languages
English (en)
Inventor
Alexey Konstantinovich Filippov
Vasily Alexeevich Rufitskiy
Jianle Chen
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112021000657A2 publication Critical patent/BR112021000657A2/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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes

Landscapes

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

Abstract

método e aparelho de filtragem de interpolação para codificação preditiva, codificador, decodificador e produto de programa de computador. a presente divulgação se refere a intra ou inter predição para codificação e decodificação de vídeo. para esse propósito, um aparelho e métodos obtêm uma amostra de referência e um valor de deslocamento de subpixel. um filtro de interpolação de 4 derivações de subpixel (2530, 2620) é usado para filtrar a amostra de referência para obter um valor de amostra predito. os coeficientes de filtro c0, c1, c2, ec3 do filtro de interpolação de 4 derivações de subpixel satifaz c0=16-p/2, c1=16+16-p/2, c2=16+p/2, and c3=p/2, com p sendo uma parte fracionária do valor do deslocamento de subpixel.

Description

MÉTODO E APARELHO DE FILTRAGEM DE INTERPOLAÇÃO PARA CODIFICAÇÃO PREDITIVA, CODIFICADOR, DECODIFICADOR E PRODUTO DE PROGRAMA DE COMPUTADOR CAMPO TÉCNICO
[0001] As modalidades do presente pedido (divulgação) geralmente se referem ao campo de processamento de imagem e mais particularmente à codificação e decodificação de imagem e/ou vídeo, e em particular ao método e aparelho para intra/inter predição.
ANTECEDENTES
[0002] A codificação de vídeo (codificação e decodificação de vídeo) é usada em uma ampla gama de aplicativos de vídeo digital, por exemplo, transmissão de TV digital, transmissão de vídeo pela Internet e redes móveis, aplicativos de conversação em tempo real como chat de vídeo, videoconferência, DVD e discos Blu-ray, sistemas de edição e aquisição de conteúdo de vídeo, e câmeras de vídeo de aplicativos de segurança.
[0003] A quantidade de dados de vídeo necessária para representar até mesmo um vídeo relativamente curto pode ser substancial, o que pode resultar em dificuldades quando os dados devem ser transmitidos ou de outra forma comunicados através de uma rede de comunicações com capacidade de largura de banda limitada. Assim, os dados de vídeo são geralmente comprimidos antes de serem comunicados pelas redes de telecomunicações dos dias modernos. O tamanho de um vídeo também pode ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento porque os recursos de memória podem ser limitados. Dispositivos de compressão de vídeo frequentemente usam software e/ou hardware na fonte para codificar os dados de vídeo antes da transmissão ou armazenamento, diminuindo assim a quantidade de dados necessária para representar imagens de vídeo digital. Os dados comprimidos são então recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas cada vez maiores de maior qualidade de vídeo, técnicas de compressão e descompressão aprimoradas que melhoram a taxa de compressão com pouco ou nenhum sacrifício na qualidade de imagem são desejáveis.
SUMÁRIO
[0004] As modalidades do presente pedido fornecem aparelhos e métodos para codificação e decodificação de acordo com as reivindicações independentes e reivindicações dependentes.
[0005] Os objetos precedentes e outros são alcançados pela matéria das reivindicações independentes e reivindicações dependentes. Outras formas de implementação são evidentes a partir das reivindicações dependentes, do relatório descritivo e das figuras.
[0006] As modalidades da invenção são definidas pelas características das reivindicações independentes, e outras implementações vantajosas das modalidades pelas características das reivindicações dependentes.
[0007] De acordo com um aspecto da presente divulgação, um método é fornecido para processamento de intra ou inter predição de um quadro de vídeo, compreendendo as etapas de: obter uma amostra de referência; obter um valor de um deslocamento de subpixel; e filtrar, usando um filtro de interpolação de 4 derivações de subpixel, a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel satisfazem: = 16 − 2 = 16 + 16 − 2 = 16 + 2 = 2 em que p é uma parte fracionária do valor de deslocamento de subpixel, e , , , e são os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel.
[0008] Em uma implementação exemplar, a(s) amostra(s) de referência podem ser referidas como ref[ x ], com ref[ x ] = p[ −1 − refIdx + x ][ −1 − refIdx ], com x = 0..nTbW + refIdx + 1. correspondendo a um arranjo de amostras de referência e "p" referindo-se a um arranjo x-y bidimensional p [ x ] [ y ] contendo valores de amostra. O número de amostras de referência usadas pode ser pelo menos um. Em outro exemplo, o número de amostras de referência pode ser quatro.
[0009] Em uma implementação exemplar, o valor de deslocamento de subpixel obtido pode ser referido como ( y + 1 + refIdx ) * intraPredAngle com "IntraPredAngle" sendo o valor de um ângulo de intra predição.
[00010] Em uma implementação exemplar, o valor de amostra predito "predSamples [x] [y]" pode ser obtido por: predSamples[ x ][ y ] = Clip1( ( ( ∑ fT[ i ] ∗ ref[ x + iIdx + i ] ) + 32 ) >> 6 ) com fT [i] referindo-se aos coeficientes de filtro. Esses coeficientes podem ser coeficientes de filtro de luma ou croma para a inter predição, referidos como fG e fC, respectivamente.
[00011] A seleção dos coeficientes de filtro sendo luma ou croma pode ser implementada pelo uso e configuração de um sinalizador "filterFlag", por exemplo, como fT[ j ] = filterFlag ? fG[ iFact ][ j ]: fC[ iFact ][ j ] com iFact = ( ( y + 1 + refIdx ) * intraPredAngle ) & 31.
[00012] O valor "31" refere-se à parte fracionária do valor de deslocamento de subpixel, e pode assumir outros valores diferentes de "31". Os valores dos coeficientes de filtro fG (luma) e/ou fC (croma) podem ser obtidos analiticamente em tempo real usando a expressão analítica acima para os coeficientes de filtro do filtro de 4 derivações. Assim, os coeficientes de filtro são definidos de acordo com o valor de deslocamento de subpixel.
[00013] Os coeficientes de filtro são, portanto, obtidos sem acessar os respectivos valores dos coeficientes de filtro a partir de um LUT, mas sim obtidos por cálculo.
[00014] Alternativamente, os coeficientes de filtro podem ser calculados usando as equações acima, e os valores podem ser armazenados em um LUT.
[00015] De acordo com um aspecto da presente divulgação, os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos em uma tabela da seguinte forma: p 0 16 32 16 0
[00016] De acordo com um aspecto da presente divulgação, um método é fornecido para processamento de intra ou inter predição de um quadro de vídeo, compreendendo as etapas de: obter uma amostra de referência; obter um valor de um deslocamento de subpixel; e filtrar, usando um filtro de interpolação de 4 derivações de subpixel, a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos como segue: p 0 16 32 16 0 1 16 32 16 0 2 15 31 17 1 3 15 31 17 1 4 14 30 18 2 5 14 30 18 2 6 13 29 19 3 7 13 29 19 3 8 12 28 20 4 9 12 28 20 4 10 11 27 21 5 11 11 27 21 5 12 10 26 22 6 13 10 26 22 6 14 9 25 23 7 15 9 25 23 7 16 8 24 24 8 em que p é uma parte fracionária do valor do deslocamento de subpixel, e , , , e são os coeficientes de filtro.
[00017] Em uma implementação exemplar, os valores dos coeficientes de filtro podem ser armazenados em um LUT. Isso significa que para a filtragem de interpolação de subpixel, os respectivos valores dos coeficientes de filtro devem ser buscados no LUT.
[00018] A FIG. 23 mostra um fluxograma do processamento de intra/inter predição. Na etapa 2301, uma amostra de referência é obtida. A amostra de referência pode incluir uma ou mais amostras de referência. Na etapa 2302, um valor de deslocamento de subpixel é então obtido. Na etapa 2303, a amostra de referência é então filtrada usando o filtro de interpolação de subpixel com coeficientes de filtro com i = 0,… 3. Isso é conhecido como filtro de 4 derivações e/ou filtro de 4 pontos.
[00019] Os coeficientes de filtro podem ser obtidos a partir de expressões analíticas com a parte fracionária p do valor de deslocamento de subpixel. Os coeficientes de filtro também podem ser obtidos a partir de um LUT com referência a valores de p.
[00020] De acordo com um aspecto da presente divulgação, um bit de p é definido como zero.
[00021] De acordo com um aspecto da presente divulgação, p é incrementado em 1 e posteriormente um bit inferior do p incrementado é definido como zero antes do referido p ser usado para obter os coeficientes de filtro.
[00022] De acordo com um aspecto da presente divulgação, a obtenção dos coeficientes de filtro compreende a etapa de cálculo dos coeficientes de filtro de acordo com = 16 − 2 = 16 + = + = − .
[00023] Isso pode fornecer uma vantagem de calcular um coeficiente de filtro a partir de um coeficiente de filtro anterior . Isso pode reduzir ainda mais o tempo para calcular os coeficientes de filtro.
[00024] De acordo com um aspecto da presente divulgação, um método de codificação de vídeo é fornecido, o método compreende o processamento de intra predição de um bloco de um quadro de vídeo, compreendendo: filtrar, usando um filtro de interpolação de 4 derivações de subpixel, de uma amostra de referência do quadro de vídeo; em que o filtro de interpolação de 4 derivações de subpixel é uma combinação de filtros, com coeficientes de filtro de pelo menos um dos filtros satisfazendo: = 16 − 2 = 16 + 16 − 2 = 16 + 2 =2 em que p é uma posição de amostra fracionária de um deslocamento de subpixel, e , , , e são os coeficientes de filtro.
[00025] A FIG. 24 mostra um fluxograma da codificação de vídeo. Na etapa 2401, o processamento de intra predição é realizado filtrando uma amostra de referência de um bloco, usando um filtro de interpolação de 4 derivações de subpixel.
[00026] De acordo com um aspecto da presente divulgação, o filtro de interpolação de 4 derivações de subpixel é um filtro de suavização que é uma combinação paralela de dois filtros lineares dependentes de fase e um filtro passa-baixa.
[00027] De acordo com um aspecto da presente divulgação, o filtro de interpolação de 4 derivações de subpixel é um filtro de nitidez que é uma combinação paralela de um filtro linear dependente de fase e filtro passa-alta de variação de intensidade.
[00028] De acordo com um aspecto da presente divulgação, o filtro passa-alta de variação de intensidade é um filtro de resposta de impulso finita de passa-alta independente de fase, FIR, a saída do qual é multiplicada por um parâmetro de intensidade dependente de fase.
[00029] De acordo com qualquer um dos aspectos anteriores da presente divulgação, um bit inferior de p é definido como zero.
[00030] De acordo com um aspecto da presente divulgação, p é incrementado em 1 e posteriormente o bit inferior do valor incrementado é definido como zero antes que este valor seja usado para derivar coeficientes de filtro de interpolação.
[00031] De acordo com um aspecto da presente divulgação, a operação de recorte é realizada para a saída do filtro passa-alta de variação de intensidade.
[00032] De acordo com um aspecto da presente divulgação, um aparelho é fornecido para processamento intra ou inter predição de um quadro de vídeo, incluindo: uma unidade de obtenção de amostra de referência configurada para obter uma amostra de referência; uma unidade de obtenção de valor de deslocamento de subpixel configurada para obter um valor de um deslocamento de subpixel; e um filtro de interpolação de 4 derivações de subpixel configurado para filtrar a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel satisfazem: = 16 − 2 = 16 + 16 − 2 = 16 + 2 =2 em que p é uma parte fracionária do valor do deslocamento de subpixel, e , , , e são os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel.
[00033] De acordo com um aspecto da presente divulgação, os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos em uma tabela da seguinte forma: p 0 16 32 16 0 1 16 32 16 0 2 15 31 17 1 3 15 31 17 1 4 14 30 18 2 5 14 30 18 2 6 13 29 19 3 7 13 29 19 3 8 12 28 20 4 9 12 28 20 4 10 11 27 21 5 11 11 27 21 5 12 10 26 22 6 13 10 26 22 6 14 9 25 23 7 15 9 25 23 7 16 8 24 24 8 17 8 24 24 8 18 7 23 25 9 19 7 23 25 9 20 6 22 26 10 21 6 22 26 10 22 5 21 27 11 23 5 21 27 11 24 4 20 28 12 25 4 20 28 12
[00034] De acordo com um aspecto da presente divulgação, um aparelho é fornecido para processamento intra ou inter predição de um quadro de vídeo, compreendendo: uma unidade de obtenção de amostra de referência configurada para obter uma amostra de referência; uma unidade de obtenção de valor de deslocamento de subpixel configurada para obter um valor de um deslocamento de subpixel; e um filtro de interpolação de 4 derivações de subpixel configurado para filtrar a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos como a seguir: p 0 16 32 16 0 1 16 32 16 0 2 15 31 17 1 3 15 31 17 1 4 14 30 18 2 5 14 30 18 2 6 13 29 19 3 7 13 29 19 3 8 12 28 20 4 9 12 28 20 4 10 11 27 21 5 em que p é uma parte fracionária do valor do deslocamento de subpixel, e , , , e são os coeficientes de filtro.
[00035] A FIG. 25 mostra um esquemático do Módulo de Processamento Intra/Inter 2500, que compreende uma unidade de obtenção de amostra de referência 2510, uma unidade de obtenção de valor de deslocamento de subpixel 2520, e um filtro de interpolação de subpixel 2530.
[00036] De acordo com um aspecto da presente divulgação,
um aparelho é fornecido para codificação de vídeo que compreende: uma unidade de processamento de intra predição configurada para realizar intra predição de um bloco de um quadro de vídeo; e um filtro de interpolação de 4 derivações de subpixel configurado para filtrar uma amostra de referência do quadro de vídeo; em que o filtro de interpolação de 4 derivações de subpixel é uma combinação de filtros, com coeficientes de filtro de pelo menos um dos filtros satisfazendo: = 16 − 2 = 16 + 16 − 2 = 16 + 2 =2 em que p é uma posição de amostra fracionária de um deslocamento de subpixel, e , , , e são os coeficientes de filtro.
[00037] A FIG. 26 mostra um esquemático do Módulo de Codificação de Vídeo 2600, que compreende uma unidade de processamento de intra predição 2610 e um filtro de interpolação de subpixel 2620.
[00038] De acordo com um aspecto da presente divulgação, um codificador (20) é fornecido, compreendendo circuitos de processamento para realizar o método de acordo com qualquer um dos aspectos anteriores da presente divulgação.
[00039] De acordo com um aspecto da presente divulgação, um decodificador (30) é fornecido, compreendendo circuitos de processamento para realizar o método de acordo com qualquer um dos aspectos anteriores da presente divulgação.
[00040] De acordo com um aspecto da presente divulgação,
um produto de programa de computador é fornecido, compreendendo um código de programa para realizar o método de acordo com qualquer um dos aspectos anteriores da presente divulgação.
[00041] De acordo com um aspecto da presente divulgação, um decodificador é fornecido, compreendendo: um ou mais processadores; e um meio de armazenamento legível por computador não transitório acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método de acordo com qualquer um dos aspectos anteriores da presente divulgação.
[00042] De acordo com um aspecto da presente divulgação, um codificador é fornecido, compreendendo: um ou mais processadores; e um meio de armazenamento legível por computador não transitório acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para realizar o método de acordo com qualquer um dos aspectos anteriores da presente divulgação.
[00043] A presente divulgação de acordo com qualquer um dos aspectos anteriores pode fornecer uma vantagem de realizar a intra/inter predição de um quadro de vídeo de maneira rápida. A razão disso é que os coeficientes de filtro de interpolação são obtidos de forma analítica, ou seja, os referidos coeficientes são calculados em tempo real. Isso evita armazenar os coeficientes em uma tabela de pesquisa (LUT), exigindo tempo de acesso para ler os coeficientes da memória.
[00044] Assim, a predição se torna mais eficiente e requer menos demanda de memória necessária. Isso permite também uma implementação de baixo custo da predição. Além disso, uma vez que os coeficientes de filtro analítico são lineares na posição de amostra fracionária p, e envolvem operações de divisão por 2, a operação respectiva pode ser realizada de forma eficiente empregando operações de bit de baixo nível rápidas. O respectivo tempo para realizar a operação de bit e para calcular os coeficientes de filtro é menor que o tempo para acessar os coeficientes armazenados a partir do LUT. Assim, a latência é reduzida.
[00045] Além disso, a estrutura analítica particular dos coeficientes de filtro pode fornecer uma vantagem de uma implementação de baixa complexidade da(s) unidade(s) de filtro. Acima, a resposta de filtro (isto é, resposta de frequência) para diferentes posições de subpixel é consistente com respeito à magnitude e fase e evita artefatos na resposta, em particular em altas frequências. A linearidade dos coeficientes de filtro pode fornecer uma vantagem de reutilizar o hardware.
[00046] Os detalhes de uma ou mais modalidades são apresentados nos desenhos anexos e na descrição abaixo. Outras características, objetos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
[00047] A invenção pode ser implementada em hardware e/ou software.
[00048] Para fins de clareza, qualquer uma das modalidades anteriores pode ser combinada com qualquer uma ou mais das outras modalidades anteriores para criar uma nova modalidade dentro do escopo da presente divulgação.
[00049] Estas e outras características serão mais claramente compreendidas a partir da seguinte descrição detalhada tomada em conjunto com os desenhos e reivindicações anexos.
BREVE DESCRIÇÃO DOS DESENHOS
[00050] Nas seguintes, modalidades da invenção são descritas em mais detalhes com referência às figuras e desenhos anexos, nos quais: a FIG. 1A é um diagrama de blocos que mostra um exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção; a FIG. 1B é um diagrama de blocos que mostra outro exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção; a FIG. 2 é um diagrama de blocos que mostra um exemplo de um codificador de vídeo configurado para implementar modalidades da invenção; a FIG. 3 é um diagrama de blocos que mostra uma estrutura de exemplo de um decodificador de vídeo configurado para implementar modalidades da invenção; a FIG. 4 é um diagrama de blocos que ilustra um exemplo de um aparelho de codificação ou um aparelho de decodificação; a FIG. 5 é um diagrama de blocos que ilustra outro exemplo de um aparelho de codificação ou um aparelho de decodificação; a FIG. 6 é um desenho que mostra direções de intra predição angulares e os modos de intra predição associados em HEVC; a FIG. 7 é um desenho que mostra direções de intra predição angulares e os modos de intra predição associados em JEM; a FIG. 8 é um desenho que mostra as direções de intra predição angular e os modos de intra predição associados em VTM-3.0 e VVC especificação v.3; a FIG. 9 é um desenho que mostra um exemplo de uma combinação de filtro para suavização, onde um conjunto de amostras de referência é inserido no filtro de interpolação; a FIG. 10 é um desenho que mostra uma combinação exemplar de filtros para filtragem de interpolação de nitidez, incluindo operação de recorte; a FIG. 11 é um desenho que mostra uma combinação exemplar de filtros para filtragem de interpolação de nitidez, com uma posição alternativa da operação de recorte; a FIG. 12A é um desenho que mostra uma combinação exemplar de filtros para filtragem de interpolação de nitidez, usando filtro de intensidade ajustável; a FIG. 12B é um desenho que mostra outra combinação exemplar de filtros para filtragem de interpolação de nitidez, usando filtro de intensidade ajustável; as FIGS. 13-21 são desenhos que mostram diferentes combinações de representações analíticas e baseadas em LUT de coeficientes de filtro de interpolação; a FIG. 22 é um desenho que mostra uma implementação exemplar do método de cálculo de coeficientes; a FIG. 23 é um fluxograma do processamento de intra/inter predição; a FIG. 24 é um fluxograma da codificação de vídeo; a FIG. 25 é um diagrama de blocos do módulo de processamento intra/inter predição, incluindo uma unidade de obtenção de amostra de referência, uma unidade de obtenção de valor de deslocamento de subpixel e um filtro de interpolação de subpixel; a FIG. 26 é um diagrama de blocos do módulo de codificação de vídeo, incluindo uma unidade de processamento de inter predição e um filtro de interpolação de subpixel.
[00051] No seguinte, sinais de referência idênticos se referem a características idênticas ou pelo menos funcionalmente equivalentes, se não for explicitamente especificado de outra forma.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[00052] 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 presente 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 limitativo, e o escopo da presente invenção é definido como sendo as reivindicações anexas.
[00053] 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 uma ou uma pluralidade de etapas de método específicas forem descritas, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar a descrita uma ou pluralidade de etapas de método (por exemplo, uma unidade realizando a uma ou a pluralidade de etapas, ou uma pluralidade de unidades, cada uma realizando uma ou mais da pluralidade de etapas), 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 uma etapa para realizar a funcionalidade de uma ou pluralidade de unidades (por exemplo, uma etapa de realização da funcionalidade de uma ou pluralidade de unidades, ou uma pluralidade de etapas, cada uma realizando a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tal uma ou pluralidade de etapas não forem explicitamente descritas ou ilustradas nas figuras. Além disso, entende-se que as características 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.
[00054] 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", o termo "quadro" ou "figura" pode ser usado como sinônimos no campo da codificação de vídeo. A codificação de vídeo (ou codificação em geral) compreende duas partes de codificação de vídeo e decodificação de vídeo. A codificação de vídeo é realizada no lado da fonte, normalmente 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) devem ser entendidas como relacionadas à "codificação" ou "decodificação" de imagens de vídeo ou respectivas sequências de vídeo. A combinação da parte de codificação e da parte de decodificação também é conhecida como CODEC (Codificação e Decodificação).
[00055] 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). Em 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 comparada à qualidade das imagens de vídeo originais.
[00056] Vários padrões de codificação de vídeo pertencem ao grupo de "codecs de vídeo híbridos com perdas" (ou seja, combinam predição espacial e temporal no domínio de amostra e codificação de transformação 2D para aplicar a quantização no domínio de transformação). 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 é tipicamente processado, ou seja, codificado, em um nível de bloco (bloco de vídeo), por exemplo, usando predição espacial (intra imagem) e/ou predição temporal (entre imagens) 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 transformação para reduzir a quantidade de dados a serem transmitidos (compressão), enquanto 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 o circuito de processamento de decodificador de modo que ambos gerem predições idênticas (por exemplo, intra e inter predições) e/ou reconstruções para processamento, ou seja, codificação dos blocos subsequentes.
[00057] Nas seguintes modalidades de um sistema de codificação de vídeo 10, um codificador de vídeo 20 e um decodificador de vídeo 30 são descritos com base nas FIGS. 1 a 3.
[00058] A FIG. 1A é um diagrama de blocos esquemático que ilustra um exemplo de sistema de codificação 10, por exemplo, um sistema de codificação de vídeo 10 (ou sistema de codificação curta 10) que pode utilizar as técnicas do presente pedido. O codificador de vídeo 20 (ou codificador curto 20) e o decodificador de vídeo 30 (ou decodificador curto 30) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar técnicas de acordo com vários exemplos descritos no presente pedido.
[00059] Como mostrado na FIG. 1A, o sistema de codificação 10 compreende um dispositivo de origem 12 configurado para fornecer dados de imagem codificados 21, por exemplo, para um dispositivo de destino 14 para decodificar os dados de imagem codificados 13.
[00060] O dispositivo de origem 12 compreende um codificador 20 e pode, adicionalmente, isto é, opcionalmente, compreender uma fonte de imagem 16, um pré- processador (ou unidade de pré-processamento) 18, por exemplo, um pré-processador de imagem 18 e uma interface de comunicação ou unidade de comunicação 22.
[00061] A fonte de imagem 16 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, uma câmera para capturar uma imagem 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 outro dispositivo para obter e/ou fornece uma imagem do mundo real, uma imagem gerada por computador (por exemplo um conteúdo de tela, uma imagem de realidade virtual (VR)) e/ou qualquer combinação dos mesmos (por exemplo, uma imagem de realidade aumentada (AR)). A fonte de imagem pode ser qualquer tipo de memória ou armazenamento que armazene qualquer uma das imagens acima mencionadas.
[00062] Em distinção ao pré-processador 18 e ao processamento realizado pela unidade de pré-processamento 18, a imagem ou dados de imagem 17 também pode ser referido como imagem bruta ou dados de imagem brutos 17.
[00063] O pré-processador 18 é configurado para receber os dados de imagem (brutos) 17 e para realizar o pré- processamento nos dados de imagem 17 para obter uma imagem pré-processada 19 ou dados de imagem pré-processados 19. O pré-processamento realizado pelo pré-processador 18 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. Pode ser entendido que a unidade de pré-processamento 18 pode ser um componente opcional.
[00064] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processados 19 e fornecer dados de imagem codificados 21 (mais detalhes serão descritos abaixo, por exemplo, com base na FIG. 2).
[00065] A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e para transmitir os dados de imagem codificados 21 (ou qualquer outra versão processada dos mesmos) através do canal de comunicação 13 para outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[00066] O dispositivo de destino 14 compreende um decodificador 30 (por exemplo, um decodificador de vídeo 30) e pode, adicionalmente, isto é, opcionalmente, compreender uma interface de comunicação ou unidade de comunicação 28, um pós-processador 32 (ou unidade de pós-processamento 32) e um dispositivo de exibição 34.
[00067] A interface de comunicação 28 do dispositivo de destino 14 está configurada para receber os dados de imagem codificados 21 (ou qualquer outra versão processada dos mesmos), por exemplo, diretamente do dispositivo de origem 12 ou de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados, e fornecer os dados de imagem codificados 21 para o decodificador 30.
[00068] A interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas para transmitir ou receber os dados de imagem codificados 21 ou dados codificados 13 através de um enlace de comunicação direto entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, uma conexão direta com fio ou sem fio, 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 privada e pública, ou qualquer tipo de combinação das mesmas.
[00069] A interface de comunicação 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 21 em um formato apropriado, por exemplo, pacotes, e/ou processar os dados de imagem codificados usando qualquer tipo de codificação de transmissão ou processamento para transmissão através de um enlace de comunicação ou rede de comunicação.
[00070] A interface de comunicação 28, formando a contraparte da interface de comunicação 22, pode ser, por exemplo, configurada para receber os dados transmitidos e processar os dados de transmissão usando qualquer tipo de decodificação de transmissão correspondente ou processamento e/ou desempacotamento para obter dados de imagem codificados
21.
[00071] Tanto a interface de comunicação 22 quanto a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecionais, conforme indicado pela seta para o canal de comunicação 13 na FIG. 1A apontando do dispositivo de origem 12 para o dispositivo de destino 14, ou interfaces de comunicação bidirecionais, e pode ser configurado, por exemplo, para enviar e receber mensagens, por exemplo, para configurar uma conexão, para reconhecer e trocar qualquer outra informação relacionada ao enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificada.
[00072] O decodificador 30 é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (mais detalhes serão descritos abaixo, por exemplo, com base na FIG. 3 ou FIG. 5).
[00073] O pós-processador 32 do dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também chamados de dados de imagem reconstruída), por exemplo, a imagem decodificada 31, para obter dados de imagem pós-processados 33, por exemplo, uma imagem pós-processada 33. O pós-processamento realizado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, recorte ou reamostragem, ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para exibição, por exemplo, pelo dispositivo de exibição 34.
[00074] O dispositivo de exibição 34 do dispositivo de destino 14 está configurado para receber os dados de imagem pós-processados 33 para exibir a imagem, por exemplo, para um usuário ou visualizador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de tela para representar a imagem reconstruída, por exemplo, uma tela integrada ou externo ou monitor. As telas podem, por exemplo, compreender telas de cristal líquido (LCD), telas de diodos emissores de luz orgânica (OLED), telas de plasma, projetores, telas micro LED, cristal líquido em silício (LCoS), processador de luz digital (DLP) ou qualquer outro tipo de tela.
[00075] Embora a FIG. 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, modalidades de dispositivos também podem compreender ambas ou ambas as funcionalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente. Em tais modalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente podem ser implementados usando o mesmo hardware e/ou software ou por hardware e/ou software separado ou qualquer combinação dos mesmos.
[00076] Como será evidente para o técnico no assunto com base na descrição, a existência e a divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou dispositivo de destino 14, como mostrado na FIG. 1A, pode variar dependendo do dispositivo e aplicação reais.
[00077] O codificador 20 (por exemplo, um codificador de vídeo 20) ou o decodificador 30 (por exemplo, um decodificador de vídeo 30) ou ambos o codificador 20 e o decodificador 30 podem ser implementados através de circuitos de processamento como mostrado na FIG. 1B, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de específicos de aplicação
(ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, hardware, codificação de vídeo dedicada ou qualquer combinação dos mesmos. O codificador 20 pode ser implementado através dos circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao codificador 20 da FIG. 2 e/ou qualquer outro sistema codificador ou subsistema aqui descrito. O decodificador 30 pode ser implementado através dos circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao decodificador 30 da FIG. 3 e/ou qualquer outro sistema ou subsistema decodificador aqui descrito. O circuito de processamento pode ser configurado para realizar as várias operações conforme discutido depois. Conforme mostrado na FIG. 5, se as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento legível por computador não transitório adequado e pode executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta divulgação. Tanto o codificador de vídeo 20 quanto o decodificador de vídeo 30 podem ser integrados como parte de um codificador/decodificador (CODEC) combinado em um único dispositivo, por exemplo, como mostrado na FIG. 1B.
[00078] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla gama de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou fixos, por exemplo, notebooks ou laptops, telefones celulares, smartphones, tablets ou computadores tablets, câmeras, computadores desktop, set-top boxes, televisores, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivos de streaming de vídeo (como servidores de serviços de conteúdo ou servidores de entrega de conteúdo), dispositivo de receptor de difusão, dispositivo transmissor de difusão, ou semelhantes e podem usar nenhum ou qualquer tipo de sistema operacional. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio. Assim, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[00079] Em alguns casos, o sistema de codificação de vídeo 10 ilustrado na FIG. 1A é apenas um exemplo e as técnicas do presente pedido podem ser aplicadas às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre a codificação e dispositivos de decodificação. Em outros exemplos, os dados são recuperados de uma memória local, transmitidos por meio de uma rede ou semelhantes. Um dispositivo de codificação de vídeo pode codificar e armazenar dados na memória e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados da memória. Em alguns exemplos, a codificação e a decodificação são realizadas por dispositivos que não se comunicam entre si, mas simplesmente codificam dados para a memória e/ou recuperam e decodificam dados da memória.
[00080] Por conveniência da descrição, as modalidades da invenção são descritas neste documento, por exemplo, por referência à Codificação de Vídeo de Alta Eficiência (HEVC) ou ao software de referência de Codificação de Vídeo Versátil (VVC), o padrão de codificação de vídeo de próxima geração desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas de Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialista de Imagem em Movimento ISO/IEC (MPEG). Um técnico no assunto entenderá que as modalidades da invenção não estão limitadas a HEVC ou VVC.
CODIFICADOR E MÉTODO DE CODIFICAÇÃO
[00081] A FIG. 2 mostra um diagrama de blocos esquemático de um codificador de vídeo de exemplo 20 que está configurado para implementar as técnicas do presente pedido. No exemplo da FIG. 2, o codificador de vídeo 20 compreende uma entrada 201 (ou interface de entrada 201), uma unidade de cálculo residual 204, uma unidade de processamento de transformação 206, uma unidade de quantização 208, uma unidade de quantização inversa 210 e unidade de processamento de transformação inversa 212, uma unidade de reconstrução 214, uma unidade de filtro de circuito 220, um buffer de imagem decodificada (DPB) 230, uma unidade de seleção de modo 260, uma unidade de codificação por entropia 270 e uma saída 272 (ou interface de saída 272). A unidade de seleção de modo 260 pode incluir uma unidade de inter predição 244, uma unidade de intra predição 254 e uma unidade de particionamento 262. A unidade de inter predição 244 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostrada). Um codificador de vídeo 20, como mostrado na FIG. 2, também pode ser referido como codificador de vídeo híbrido ou um codificador de vídeo de acordo com um codec de vídeo híbrido.
[00082] A unidade de cálculo residual 204, a unidade de processamento de transformação 206, a unidade de quantização
208, a unidade de seleção de modo 260 podem ser referidas como formando um percurso de sinal direto do codificador 20, enquanto a unidade de quantização inversa 210, a unidade de processamento de transformação inversa 212, a unidade de reconstrução 214, o buffer 216, o filtro de circuito 220, o buffer de imagem decodificada (DPB) 230, a unidade de inter predição 244 e a unidade de intra predição 254 podem ser referidos como formando um percurso de sinal reverso do codificador de vídeo 20, em que o percurso do sinal de retorno do codificador de vídeo 20 corresponde ao percurso de sinal do decodificador (ver o decodificador de vídeo 30 na FIG. 3). A unidade de quantização inversa 210, a unidade de processamento de transformação inversa 212, a unidade de reconstrução 214, o filtro de circuito 220, o buffer de imagem decodificada (DPB) 230, a unidade de inter predição 244 e a unidade de intra predição 254 também são referidas para formar o "Decodificador embutido" do codificador de vídeo 20. IMAGENS E PARTICIONAMENTO DE IMAGENS (IMAGENS E BLOCOS)
[00083] O codificador 20 pode ser configurado para receber, por exemplo, através da entrada 201, uma imagem 17 (ou dados de imagem 17), por exemplo, imagem de uma sequência de imagens formando um vídeo ou sequência de vídeo. A imagem recebida ou os dados da imagem também podem ser uma imagem pré-processada 19 (ou dados da imagem pré-processados 19). Por uma questão de simplicidade, a seguinte descrição refere- se à imagem 17. A imagem 17 também pode ser referida 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 previamente codificadas e/ou decodificadas da mesma sequência de vídeo, ou seja, a sequência de vídeo que também inclui a imagem atual).
[00084] Uma imagem (digital) é ou pode ser considerada como um arranjo ou matriz bidimensional de amostras com valores de intensidade. Uma amostra no arranjo também pode ser referida como pixel (forma abreviada de elemento de imagem) ou pel. O número de amostras na direção horizontal e vertical (ou eixo geométrico) do arranjo 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 arranjos de amostra. No formato RBG ou espaço de cor, uma imagem compreende uma arranjo 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 e 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 curto) Y representa o brilho ou intensidade de nível de cinza (por exemplo, como em uma imagem em escala de cinza), enquanto os dois componentes de crominância (ou croma curto) Cb e Cr representam a cromaticidade ou componentes de informação de cor. Consequentemente, uma imagem no formato YCbCr compreende uma arranjo de amostra de luminância de valores de amostra de luminância (Y) e dois arranjos 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 arranjo de amostra de luminância. Consequentemente, uma imagem pode ser, por exemplo, uma arranjo de amostras de luma em formato monocromático ou uma arranjo de amostras de luma e dois arranjos correspondentes de amostras de croma em formato de cor 4:2:0, 4:2:2 e 4:4:4.
[00085] As modalidades do codificador de vídeo 20 podem compreender uma unidade de particionamento de imagem (não representada na FIG. 2) configurada para particionar a imagem 17 em uma pluralidade de blocos de imagem 203 (normalmente não sobrepostos). Esses blocos também podem ser referidos como blocos raiz, macroblocos (H.264/AVC) ou blocos de árvore de codificação (CTB) ou unidades de árvore de codificação (CTU) (H.265/HEVC e VVC). A unidade de particionamento de imagens 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 nos blocos correspondentes.
[00086] Em outras modalidades, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, vários ou todos os blocos que formam a imagem 17. O bloco 203 de imagem também pode ser referido como bloco de imagem atual ou bloco de imagem a ser codificado.
[00087] Como a imagem 17, o bloco de imagem 203 é ou pode ser considerado como um arranjo ou matriz bidimensional de amostras com valores de intensidade (valores de amostra), embora de dimensão menor do que a imagem 17. Em outras palavras, o bloco 203 pode compreender, por exemplo, um arranjo de amostra (por exemplo, um arranjo de luma no caso de uma imagem monocromática 17, ou um arranjo de luma ou croma no caso de uma imagem colorida) ou três arranjos de amostra (por exemplo, um luma e dois arranjos de croma no caso de uma imagem colorida 17) ou qualquer outro número e/ou tipo de arranjos dependendo do formato de cor aplicado. O número de amostras na direção horizontal e vertical (ou eixo geométrico) do bloco 203 define o tamanho de bloco 203. Por conseguinte, um bloco pode, por exemplo, um arranjo MxN (coluna M por linha N) de amostras ou um arranjo MxN de coeficientes de transformação.
[00088] As modalidades do codificador de vídeo 20, como mostrado na FIG. 2, podem ser configuradas para codificar a imagem 17 bloco a bloco, por exemplo, a codificação e a predição são realizadas por bloco 203.
CÁLCULO RESIDUAL
[00089] A unidade de cálculo residual 204 pode ser configurada para calcular um bloco residual 205 (também referido como residual 205) com base no bloco de imagem 203 e um bloco de predição 265 (mais detalhes sobre o bloco de predição 265 são fornecidos posteriormente), por exemplo, subtraindo a amostra valores do bloco de predição 265 a partir de valores de amostra do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio de amostra.
TRANSFORMAÇÃO
[00090] A unidade de processamento de transformação 206 pode ser configurada para aplicar uma transformação, por exemplo, uma transformação de cosseno discreta (DCT) ou transformação de seno discreta (DST), nos valores de amostra do bloco residual 205 para obter coeficientes de transformação 207 em um domínio de transformação. Os coeficientes de transformação 207 também podem ser referidos como coeficientes residuais de transformação e representam o bloco residual 205 no domínio de transformação.
[00091] A unidade de processamento de transformação 206 pode ser configurada para aplicar aproximações inteiras de DCT/DST, como as transformações especificadas para H.265/HEVC. Comparado a uma transformação DCT ortogonal, tais aproximações inteiras são normalmente escaladas por um determinado fator. A fim de preservar a norma do bloco residual que é processado pelas transformações direta e inversa, fatores de escala adicionais são aplicados como parte do processo de transformação. Os fatores de escala são normalmente escolhidos com base em certas restrições, como fatores de escala sendo uma potência de dois para operações de deslocamento, profundidade de bits dos coeficientes de transformação, compensação entre precisão e custos de implementação, etc. Fatores de escala específicos são, por exemplo, especificados para a transformação inversa, por exemplo, pela unidade de processamento de transformação inversa 212 (e a transformação inversa correspondente, por exemplo, pela unidade de processamento de transformação inversa 312 no decodificador de vídeo 30) e fatores de escala correspondentes para a transformação direta, por exemplo pela unidade de processamento de transformação 206, em um codificador 20 pode ser especificado em conformidade.
[00092] As modalidades do codificador de vídeo 20 (respectivamente unidade de processamento de transformação
206) podem ser configuradas para emitir parâmetros de transformação, por exemplo, um tipo de transformação ou transformações, por exemplo, diretamente ou codificado ou comprimido através da unidade de codificação por entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de transformação para decodificação.
QUANTIZAÇÃO
[00093] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformação 207 para obter coeficientes quantizados 209, por exemplo, aplicando quantização escalar ou quantização vetorial. Os coeficientes quantizados 209 também podem ser referidos como coeficientes de transformação quantizados 209 ou coeficientes residuais quantizados 209.
[00094] O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes de transformação 207. Por exemplo, um coeficiente de transformação de n bits pode ser arredondado para baixo para um coeficiente de transformação de m bits durante a quantização, onde n é maior que m. O grau de quantização pode ser modificado ajustando um parâmetro de quantização (QP). Por exemplo, para a quantização escalar, diferentes escalas podem ser aplicadas para alcançar uma quantização mais fina ou mais grosseira. Tamanhos de etapa de quantização menores correspondem a quantização mais fina, enquanto tamanhos de etapa de quantização maiores correspondem a quantização mais grosseira. O tamanho de etapa de quantização aplicável pode ser indicado por um parâmetro de quantização (QP). O parâmetro de quantização pode ser,
por exemplo, um índice para um conjunto predefinido de tamanhos de etapas de quantização aplicáveis. Por exemplo, pequenos parâmetros de quantização podem corresponder a quantização fina (tamanhos de etapas de quantização pequenos) e parâmetros de quantização grandes podem corresponder a quantização grosseira (tamanhos de etapas de quantização grandes) ou vice-versa. A quantização pode incluir a divisão por um tamanho de etapa de quantização e uma correspondente e/ou a desquantização inversa, por exemplo, por unidade de quantização inversa 210, pode incluir multiplicação pelo tamanho de etapa de quantização. As modalidades de acordo com alguns padrões, por exemplo, HEVC, podem ser configuradas para usar um parâmetro de quantização para determinar o tamanho de etapa de quantização. Geralmente, o tamanho de etapa de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação incluindo divisão. Fatores de escala adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, que pode ser modificada por causa da escala usada na aproximação de ponto fixo da equação para o tamanho de etapa de quantização e parâmetro de quantização. Em uma implementação de exemplo, o dimensionamento da transformação inversa e a desquantização podem ser combinados. Alternativamente, tabelas de quantização personalizadas podem ser usadas e sinalizadas de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perdas, em que a perda aumenta com o aumento dos tamanhos de etapas de quantização.
[00095] As modalidades do codificador de vídeo 20
(respectivamente unidade de quantização 208) podem ser configuradas para emitir parâmetros de quantização (QP), por exemplo, diretamente ou codificados por meio da unidade de codificação por entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e aplicar os parâmetros de quantização para decodificação.
QUANTIZAÇÃO INVERSA
[00096] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da unidade de quantização 208 nos coeficientes quantizados para obter coeficientes desquantizados 211, por exemplo, aplicando o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base em ou usando o mesmo tamanho de etapa de quantização como a unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como coeficientes residuais desquantizados 211 e correspondem - embora normalmente não sejam idênticos aos coeficientes de transformação devido à perda por quantização - aos coeficientes de transformação 207.
TRANSFORMAÇÃO INVERSA
[00097] A unidade de processamento de transformação inversa 212 é configurada para aplicar a transformação inversa da transformação aplicada pela unidade de processamento de transformação 206, por exemplo, uma transformação de cosseno discreta inversa (DCT) ou transformação de seno discreta inversa (DST) ou outras transformações inversas, para obter bloco residual 213 (ou coeficientes desquantizados correspondentes 213) no domínio de amostra. O bloco residual reconstruído 213 também pode ser referido como bloco de transformação 213.
RECONSTRUÇÃO
[00098] A unidade de reconstrução 214 (por exemplo, adicionador ou somador 214) é configurada para adicionar o bloco de transformação 213 (ou seja, bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio de amostra, por exemplo, adicionando - amostra por amostra - os valores de amostra do bloco residual reconstruído 213 e os valores de amostra do bloco de predição 265.
FILTRAGEM
[00099] A unidade de filtro de circuito 220 (ou "filtro de circuito" curto 220) é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221 ou, em geral, para filtrar amostras reconstruídas para obter amostras filtradas. A unidade de filtro de circuito é, por exemplo, configurada para suavizar as transições de pixel ou de outra forma melhorar a qualidade de vídeo. A unidade de filtro de circuito 220 pode compreender um ou mais filtros de circuito, como um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro de circuito adaptativo (ALF), um nitidez, filtros de suavização ou filtros colaborativos, ou qualquer combinação dos mesmos. Embora a unidade de filtro de circuito 220 seja mostrada na FIG. 2 como sendo um filtro em circuito, em outras configurações, a unidade de filtro de circuito 220 pode ser implementada como um filtro pós circuito. O bloco filtrado 221 também pode ser referido como bloco reconstruído filtrado
221.
[000100] As modalidades do codificador de vídeo 20
(respectivamente unidade de filtro de circuito 220) podem ser configuradas para emitir parâmetros de filtro de circuito (tais como informações de deslocamento adaptativo de amostra), por exemplo, diretamente ou codificado através da unidade de codificação por entropia 270, de modo que, por exemplo, um decodificador 30 pode receber e aplicar os mesmos parâmetros de filtro de circuito ou respectivos filtros de circuito para decodificação.
BUFFER DE IMAGEM DECODIFICADA
[000101] O buffer de imagem decodificada (DPB) 230 pode ser uma memória que armazena imagens de referência, ou em dados de imagem de referência geral, para codificar dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por qualquer um de uma variedade de dispositivos de memória, como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. O buffer de imagem decodificada (DPB) 230 pode ser configurado para armazenar um ou mais blocos filtrados
221. O buffer de imagem decodificada 230 pode ser ainda configurado para armazenar outros blocos previamente filtrados, por exemplo, blocos previamente reconstruídos e filtrados 221, da mesma imagem atual ou de imagens diferentes, por exemplo, imagens previamente reconstruídas, e pode fornecer imagens previamente reconstruídas completas, isto é, decodificadas, imagens (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 inter predição. O buffer de imagem decodificada (DPB) 230 também pode ser configurado para armazenar um ou mais blocos reconstruídos não filtrados 215 ou, em geral, amostras reconstruídas não filtradas, por exemplo, se o bloco reconstruído 215 não for filtrado pela unidade de filtro de circuito 220 ou qualquer outra versão processada adicional dos blocos reconstruídos ou amostras. SELEÇÃO DE MODO (PARTICIONAMENTO E PREDIÇÃO)
[000102] A unidade de seleção de modo 260 compreende unidade de particionamento 262, unidade de inter predição 244 e unidade de intra predição 254, e é configurada para receber ou obter dados de imagem original, por exemplo, um bloco original 203 (bloco atual 203 da imagem atual 17), e dados de imagem reconstruída, por exemplo, amostras reconstruídas filtradas e/ou não filtradas ou blocos da mesma imagem (atual) e/ou de uma ou uma pluralidade de imagens previamente decodificadas, por exemplo, do buffer de imagem decodificada 230 ou outros buffers (por exemplo, buffer de linha, não mostrado). Os dados de imagem reconstruída são usados como dados de imagem de referência para predição, por exemplo inter predição ou intra predição, para obter um bloco de predição 265 ou preditor 265.
[000103] A unidade de seleção de modo 260 pode ser configurada para determinar ou selecionar um particionamento para um modo de predição de bloco atual (incluindo sem particionamento) e um modo de predição (por exemplo, um modo intra ou inter predição) e gerar um bloco de predição correspondente 265, que é usado para o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído
215.
[000104] As modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar o particionamento e o modo de predição (por exemplo, daqueles suportados por ou disponíveis para a unidade de seleção de modo 260), que fornecem a melhor combinação ou em outras palavras o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento), ou um overhead mínimo de sinalização (overhead mínimo de sinalização significa melhor compressão para transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo 260 pode ser configurada para determinar o modo de particionamento e predição com base na otimização de distorção de taxa (RDO), ou seja, selecionar o modo de predição que fornece uma distorção de taxa mínima. Termos como "melhor", "mínimo", "ótimo" etc., neste contexto, não se referem necessariamente a um "melhor" geral, "mínimo", "ótimo", etc., mas também podem se referir ao cumprimento de uma rescisão ou critério de seleção como um valor excedendo ou caindo abaixo de um limite ou outras restrições levando potencialmente a uma "seleção sub-ótima", mas reduzindo a complexidade e o tempo de processamento.
[000105] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar o bloco 203 em partições de bloco menores ou sub-blocos (que formam novamente blocos), por exemplo, iterativamente usando particionamento de árvore quádrupla (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer combinação dos mesmos, e para realizar, por exemplo, a predição para cada uma das partições de bloco ou sub- blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e o os modos de predição são aplicados a cada uma das partições de bloco ou sub-blocos.
[000106] A seguir, o particionamento (por exemplo, por unidade de particionamento 260) e processamento de predição (por unidade de inter predição 244 e unidade de intra predição 254) realizado por um codificador de vídeo de exemplo 20 será explicado em mais detalhes.
PARTICIONAMENTO
[000107] A unidade de particionamento 262 pode particionar (ou dividir) um bloco atual 203 em partições menores, por exemplo, blocos menores de tamanho quadrado ou retangular. Esses blocos menores (que também podem ser chamados de sub-blocos) podem ser posteriormente particionados em partições ainda menores. Isso também é referido como particionamento de árvore ou particionamento de árvore hierárquica, em que um bloco raiz, por exemplo, no nível de árvore raiz 0 (nível de hierarquia 0, profundidade 0), pode ser particionado recursivamente, por exemplo, particionado em dois ou mais blocos de um próximo nível de árvore inferior, por exemplo, nós no nível de árvore 1 (nível de hierarquia 1, profundidade 1), em que esses blocos podem ser novamente particionados em dois ou mais blocos de um próximo nível inferior, por exemplo, nível de árvore 2 (nível de hierarquia 2, profundidade 2), etc. até que o particionamento seja encerrado, por exemplo, porque um critério de encerramento é atendido, por exemplo, uma profundidade máxima da árvore ou tamanho mínimo do bloco é alcançado. Os blocos que não são particionados posteriormente também são chamados de blocos-folha ou nós- folha da árvore. Uma árvore que usa particionamento em duas partições é chamada de árvore binária (BT), uma árvore que usa particionamento em três partições é chamada de árvore ternária (TT) e uma árvore que usa particionamento em quatro partições é chamada de árvore quaternária (QT).
[000108] Como mencionado antes, o termo "bloco", conforme usado neste documento, pode ser uma parte, em particular uma parte quadrada ou retangular, de uma imagem. Com referência, por exemplo, a HEVC e VVC, o bloco pode ser ou corresponder a uma unidade de árvore de codificação (CTU), uma unidade de codificação (CU), unidade de predição (PU) e unidade de transformação (TU) e/ou para o blocos correspondentes, por exemplo, um bloco de árvore de codificação (CTB), um bloco de codificação (CB), um bloco de transformação (TB) ou bloco de predição (PB).
[000109] Por exemplo, uma unidade de árvore de codificação (CTU) pode ser ou compreender um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra, ou um CTB de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco NxN de amostras para algum valor de N de modo que a divisão de um componente em CTBs seja um particionamento. Uma unidade de codificação (CU) pode ser ou compreender um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra, ou um bloco de codificação de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores e estruturas de sintaxe separados usados para codificar as amostras. Correspondentemente, um bloco de codificação (CB) pode ser um bloco MxN de amostras para alguns valores de M e N de modo que a divisão de um CTB em blocos de codificação seja um particionamento.
[000110] Em modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs usando uma estrutura de árvore quádrupla denotada como árvore de codificação. A decisão de codificar uma área de imagem usando predição inter imagem (temporal) ou intra imagem (espacial) é feita no nível de CU. Cada CU pode ser dividida em uma, duas ou quatro PUs de acordo com o tipo de divisão de PU. Dentro de cada PU, o mesmo processo de predição é aplicado e as informações relevantes são transmitidas para o decodificador com base em PU. Depois de obter o bloco residual aplicando o processo de predição com base no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformação (TUs) de acordo com outra estrutura de árvore quádrupla semelhante à árvore de codificação para a CU.
[000111] Em modalidades, por exemplo, de acordo com o padrão de codificação de vídeo mais recente atualmente em desenvolvimento, que é referido como Codificação de Vídeo Versátil (VVC), o particionamento de árvore quádrupla e árvore binária (QTBT) é usado para particionar um bloco de codificação. Na estrutura de bloco QTBT, uma CU pode ter uma forma quadrada ou retangular. Por exemplo, uma unidade de árvore de codificação (CTU) é primeiro particionada por uma estrutura de árvore quádrupla. Os nós folha de árvore quádrupla são ainda particionados por uma árvore binária ou estrutura de árvore ternária (ou tripla). Os nós folha da árvore de particionamento são chamados de unidades de codificação (CUs), e essa segmentação é usada para predição e processamento de transformação sem qualquer particionamento adicional. Isso significa que CU, PU e TU têm o mesmo tamanho de bloco na estrutura do bloco de codificação QTBT. Paralelamente, a partição múltipla, por exemplo, partição em árvore tripla também foi proposta para ser usada em conjunto com a estrutura de blocos QTBT.
[000112] Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento aqui descritas.
[000113] Conforme descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor ou um modo de predição ideal a partir de um conjunto de modos de predição (pré-determinados). O conjunto de modos de predição pode compreender, por exemplo, modos de intra predição e/ou modos de inter predição.
INTRA PREDIÇÃO
[000114] O conjunto de modos de intra predição pode compreender 35 modos de intra prediçã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 HEVC, ou pode compreender 67 diferentes modos de intra predição, por exemplo, modos não direcionais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido para VVC.
[000115] A unidade de intra predição 254 é configurada para usar amostras reconstruídas de blocos vizinhos da mesma imagem atual para gerar um bloco de intra predição 265 de acordo com um modo de intra predição do conjunto de modos de intra predição.
[000116] A unidade de intra predição 254 (ou, em geral, a unidade de seleção de modo 260) é ainda configurada para emitir parâmetros de intra predição (ou em informações gerais indicativas do modo de intra predição selecionado para o bloco) para a unidade de codificação por entropia 270 na forma de elementos de sintaxe 266 para inclusão nos dados de imagem codificados 21, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de predição para decodificação.
INTER PREDIÇÃO
[000117] O conjunto de (ou possíveis) modos de inter predição depende das imagens de referência disponíveis (ou seja, imagens anteriores pelo menos parcialmente decodificadas, por exemplo, armazenadas em DBP 230) e outros parâmetros de inter predição, por exemplo, se a imagem de referência inteira ou apenas uma parte, por exemplo, uma área de janela de pesquisa em torno da área do bloco atual, da imagem de referência é usada para pesquisar o melhor bloco de referência correspondente, e/ou por exemplo, se a interpolação de pixel é aplicada, por exemplo, interpolação de meio/semi-pel e/ou de quarto-de-pel, ou não.
[000118] Além dos modos de predição acima, o modo de salto e/ou o modo direto podem ser aplicados.
[000119] A unidade de inter predição 244 pode incluir uma unidade de estimativa de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na FIG.2). A unidade de estimativa de movimento pode ser configurada para receber ou obter o bloco de imagem 203 (bloco de imagem atual 203 da imagem atual 17) e uma imagem decodificada 231, ou pelo menos um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos reconstruídos de um ou uma pluralidade de outras/diferentes imagens previamente decodificadas 231, para estimativa de movimento. 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.
[000120] O codificador 20 pode, por exemplo, ser configurado para selecionar um bloco de referência a partir de uma pluralidade de blocos de referência da mesma ou diferentes imagens da pluralidade de outras imagens e fornece 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 inter predição para a unidade de estimativa de movimento. Este deslocamento também é chamado de vetor de movimento (MV).
[000121] A unidade de compensação de movimento é configurada para obter, por exemplo, receber, um parâmetro de inter predição e realizar inter predição com base em ou usando o parâmetro de inter predição para obter um bloco de inter predição 265. A compensação de movimento, realizada pela unidade de compensação de movimento, pode envolver buscar ou gerar o bloco de predição com base no vetor de movimento/bloco determinado pela estimativa de movimento, possivelmente realizando interpolações para precisão de subpixel. A filtragem de interpolação pode gerar amostras de pixel adicionais a partir de amostras de pixel conhecidas, aumentando assim potencialmente o número de blocos de predição candidatos que podem ser usados para codificar um bloco de imagem. Ao receber o vetor de movimento para a PU do bloco de imagem atual, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagens de referência.
[000122] A unidade de compensação de movimento também pode gerar elementos de sintaxe associados aos blocos e à fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagem da fatia de vídeo.
CODIFICAÇÃO POR ENTROPIA
[000123] A unidade de codificação por entropia 270 é configurada para aplicar, por exemplo, um algoritmo ou esquema de codificação por entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema VLC adaptativo de contexto (CAVLC), um esquema de codificação aritmética, uma binarização, uma codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptável de contexto baseada em sintaxe (SBAC), codificação por entropia de partição de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação por entropia) ou desvio (sem compressão) nos coeficientes quantizados 209, parâmetros de inter predição, parâmetros de intra predição, parâmetros de filtro de circuito e/ou outros elementos de sintaxe para obter dados de imagem codificados 21 que podem ser emitidos através da saída 272, por exemplo, na forma de um fluxo de bits codificado 21, de modo que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de decodificação. O fluxo de bits codificado 21 pode ser transmitido para o decodificador de vídeo 30, ou armazenado em uma memória para transmissão posterior ou recuperação pelo decodificador de vídeo 30.
[000124] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador não baseado em transformação 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformação 206 para certos blocos ou quadros. Em outra implementação, um codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade.
DECODIFICADOR E MÉTODO DE DECODIFICAÇÃO
[000125] A FIG. 3 mostra um exemplo de um decodificador de vídeo 30 que está configurado para implementar as técnicas do presente pedido. O decodificador de vídeo 30 é configurado para receber dados de imagem codificados 21 (por exemplo, fluxo de bits codificado 21), por exemplo, codificados pelo codificador 20, para obter uma imagem decodificada 331. Os dados de imagem codificados ou fluxo de bits compreende informações para decodificar os dados de imagem codificados, por exemplo, dados que representam blocos de imagem de uma fatia de vídeo codificada e elementos de sintaxe associados.
[000126] No exemplo da FIG. 3, o decodificador 30 compreende uma unidade de decodificação por entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformação inversa 312, uma unidade de reconstrução 314 (por exemplo, um somador 314), um filtro de circuito 320, um buffer de imagem decodificada (DBP) 330,
uma unidade de inter predição 344 e uma unidade de intra predição 354. A unidade de inter predição 344 pode ser ou incluir uma unidade de compensação de movimento. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente recíproca para a passagem de codificação descrita em relação ao codificador de vídeo 100 da FIG. 2.
[000127] Conforme explicado no que diz respeito ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformação inversa 212, a unidade de reconstrução 214, o filtro de circuito 220, o buffer de imagem decodificada (DPB) 230, a unidade de inter predição 344 e a unidade de intra predição 354 também são referidas como formando o "Decodificador embutido" do codificador de vídeo 20. Por conseguinte, a unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformação inversa 312 pode ser idêntica em função à unidade de processamento de transformação inversa 212, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, o filtro de circuito 320 pode ser idêntico em função ao filtro de circuito 220, e o buffer de imagem decodificada 330 pode ser idêntico em função ao buffer de imagem decodificada 230. Portanto, as explicações fornecidas para as respectivas unidades e funções do codificador de vídeo 20 se aplicam correspondentemente às respectivas unidades e funções do decodificador de vídeo 30.
DECODIFICAÇÃO POR ENTROPIA
[000128] A unidade de decodificação por entropia 304 é configurada para analisar o fluxo de bits 21 (ou em dados de imagem codificados em geral 21) e realizar, por exemplo, decodificação por entropia para os dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação decodificados ( não mostrado na FIG. 3), por exemplo, qualquer um ou todos os parâmetros de inter predição (por exemplo, índice de imagem de referência e vetor de movimento), parâmetro de intra predição (por exemplo, modo de intra predição ou índice), parâmetros de transformação, parâmetros de quantização, parâmetros de filtro de circuito e/ou outros elementos de sintaxe. A unidade de decodificação por entropia 304 pode ser configurada para aplicar os algoritmos ou esquemas de decodificação correspondentes aos esquemas de codificação, conforme descrito em relação à unidade de codificação por entropia 270 do codificador 20. A unidade de decodificação por entropia 304 pode ser ainda configurada para fornecer parâmetros de inter predição, parâmetro de intra predição e/ou outros elementos de sintaxe para a unidade de seleção de modo 360 e outros parâmetros para outras unidades do decodificador 30. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou nível de bloco de vídeo.
QUANTIZAÇÃO INVERSA
[000129] A unidade de quantização inversa 310 pode ser configurada para receber parâmetros de quantização (QP) (ou em informações gerais relacionadas à quantização inversa) e coeficientes quantizados dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, por unidade de decodificação por entropia 304) e aplicar com base nos parâmetros de quantização uma quantização inversa nos coeficientes quantizados decodificados 309 para obter coeficientes desquantizados 311, que também podem ser referidos como coeficientes de transformação 311. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização determinado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado.
TRANSFORMAÇÃO INVERSA
[000130] A unidade de processamento de transformação inversa 312 pode ser configurada para receber coeficientes desquantizados 311, também referidos como coeficientes de transformação 311, e para aplicar uma transformação aos coeficientes desquantizados 311 a fim de obter blocos residuais reconstruídos 213 no domínio de amostra. Os blocos residuais reconstruídos 213 também podem ser referidos como blocos de transformação 313. A transformação pode ser uma transformação inversa, por exemplo, um DCT inverso, um DST inverso, uma transformação inteira inversa ou um processo de transformação inversa conceitualmente semelhante. A unidade de processamento de transformação inversa 312 pode ainda ser configurada para receber parâmetros de transformação ou informações correspondentes dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, por unidade de decodificação por entropia 304) para determinar a transformação a ser aplicada aos coeficientes desquantizados 311.
RECONSTRUÇÃO
[000131] A unidade de reconstrução 314 (por exemplo, adicionador ou somador 314) pode ser configurada para adicionar o bloco residual reconstruído 313, ao bloco de predição 365 para obter um bloco reconstruído 315 no domínio de amostra, por exemplo, adicionando os valores de amostra do bloco residual reconstruído 313 e os valores de amostra do bloco de predição 365.
FILTRAGEM
[000132] A unidade de filtro de circuito 320 (quer no circuito de codificação ou após o circuito de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para suavizar as transições de pixel ou de outra forma melhorar a qualidade de vídeo. A unidade de filtro de circuito 320 pode compreender um ou mais filtros de circuito, como um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro de circuito adaptativo (ALF), um nitidez, filtros de suavização ou filtros colaborativos, ou qualquer combinação dos mesmos. Embora a unidade de filtro de circuito 320 seja mostrada na FIG. 3 como sendo um filtro em circuito, em outras configurações, a unidade de filtro de circuito 320 pode ser implementada como um filtro pós circuito.
BUFFER DE IMAGEM DECODIFICADA
[000133] Os blocos de vídeo decodificados 321 de uma imagem são então armazenados no buffer de imagem decodificada 330, que armazena as imagens decodificadas 331 como imagens de referência para compensação de movimento subsequente para outras imagens e/ou para exibição de saída, respectivamente.
[000134] O decodificador 30 é configurado para emitir a imagem decodificada 311, por exemplo, através da saída
312, para apresentação ou visualização a um usuário.
PREDIÇÃO
[000135] A unidade de inter predição 344 pode ser idêntica à unidade de inter predição 244 (em particular à unidade de compensação de movimento) e a unidade de intra predição 354 pode ser idêntica à unidade de inter predição 254 em função, e realiza decisões de divisão ou particionamento e predição com base em nos parâmetros de particionamento e/ou predição ou respectiva informação recebida dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, por unidade de decodificação por entropia 304). A unidade de seleção de modo 360 pode ser configurada para realizar a predição (intra ou inter predição) por bloco com base em imagens reconstruídas, blocos ou respectivas amostras (filtradas ou não filtradas) para obter o bloco de predição 365.
[000136] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intra predição 354 da unidade de seleção de modo 360 é configurada para gerar o bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de intra predição sinalizado e dados de blocos previamente decodificados da imagem atual. Quando a imagem de vídeo é codificada como uma fatia Inter codificada (isto é, B ou P), a unidade de inter predição 344 (por exemplo, unidade de compensação de movimento) da unidade de seleção de modo 360 é configurada para produzir blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação por entropia
304. Para inter predição, os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadros de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas no DPB
330.
[000137] A unidade de seleção de modo 360 é configurada para determinar as informações de predição para um bloco de vídeo da fatia de vídeo atual, analisando os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de seleção de modo 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra ou inter predição) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de inter predição (por exemplo, fatia B, fatia P, ou fatia GPB), informações de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo Inter codificado da fatia, estado de inter predição para cada bloco de vídeo codificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[000138] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificados 21. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo de saída sem a unidade de filtragem de circuito 320. Por exemplo, um decodificador não baseado em transformação 30 pode quantificar inversamente o sinal residual diretamente sem a unidade de processamento de transformação inversa 312 para certos blocos ou quadros. Em outra implementação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformação inversa 312 combinadas em uma única unidade.
[000139] Deve ser entendido que, no codificador 20 e no decodificador 30, um resultado de processamento de uma etapa atual pode ser posteriormente processado e, em seguida, enviado para a próxima etapa. Por exemplo, após a filtragem de interpolação, derivação de vetor de movimento ou filtragem de circuito, uma operação adicional, como Clip ou deslocamento, pode ser realizada no resultado do processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem de circuito.
[000140] Deve-se notar que outras operações podem ser aplicadas aos vetores de movimento derivados do bloco atual (incluindo, mas não se limitando a vetores de movimento de ponto de controle de modo afim, vetores de movimento de sub- bloco em modos afins, planos, ATMVP, vetores de movimento temporais e assim em diante). Por exemplo, o valor do vetor de movimento é restrito a um intervalo predefinido de acordo com seu bit de representação. Se o bit de representação do vetor de movimento for bitDepth, então o intervalo é - 2^(bitDepth-1) ~ 2^(bitDepth-1)-1, onde "^" significa exponenciação. Por exemplo, se bitDepth for definido igual a 16, o intervalo é -32768 ~ 32767; se bitDepth for definido igual a 18, o intervalo é -131072 ~ 131071. Por exemplo, o valor do vetor de movimento derivado (por exemplo, os MVs de quatro sub-blocos 4x4 dentro de um bloco 8x8) é restrito de modo que a diferença máxima entre as partes inteiras dos quatro MVs de sub-bloco 4x4 não seja superior a N pixels, como no máximo 1 pixel. Aqui estão dois métodos para restringir o vetor de movimento de acordo com o bitDepth.
[000141] Método 1: remover o overflow MSB (bit mais significativo) pelas operações seguintes: ux= ( mvx+2bitDepth ) % 2bitDepth (1) mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ): ux (2) uy= ( mvy+2bitDepth ) % 2bitDepth (3) mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ): uy (4) onde mvx é um componente horizontal de um vetor de movimento de um bloco de imagem ou um sub-bloco, mvy é um componente vertical de um vetor de movimento de um bloco de imagem ou um sub-bloco, e ux e uy indicam um valor intermediário.
[000142] Por exemplo, se o valor de mvx for -32769, após a aplicação da fórmula (1) e (2), o valor resultante será 32767. No sistema de computador, os números decimais são armazenados como complemento de dois. O complemento de dois de -32769 é 1,0111, 1111, 1111, 1111 (17 bits), então o MSB é descartado, então o complemento de dois resultantes é 0111, 1111, 1111, 1111 (número decimal é 32767), que é o mesmo como saída aplicando a fórmula (1) e (2). ux= ( mvpx + mvdx +2bitDepth ) % 2bitDepth (5) mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ): ux (6) uy= ( mvpy + mvdy +2bitDepth ) % 2bitDepth (7) mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ): uy (8)
[000143] As operações podem ser aplicadas durante a soma de mvp e mvd, conforme demonstrado nas fórmulas (5) a (8).
[000144] Método 2: remover o overflow MSB cortando o valor vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx) vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy) onde vx é um componente horizontal de um vetor de movimento de um bloco de imagem ou sub-bloco, vy é um componente vertical de um vetor de movimento de um bloco de imagem ou sub-bloco; x, y e z, respectivamente, correspondem a três valores de entrada do processo de recorte MV, e a definição da função Clip3 é a seguinte: Clip3( x, y, z ) = !y x ; z<x ; z>y z ; otherwise
[000145] A FIG. 4 é um diagrama esquemático de um dispositivo de codificação de vídeo 400 de acordo com uma modalidade da divulgação. O dispositivo de codificação de vídeo 400 é adequado para implementar as modalidades divulgadas conforme descrito neste documento. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador, como o decodificador de vídeo 30 da FIG. 1A ou um codificador, como o codificador de vídeo 20 da FIG. 1A.
[000146] O dispositivo de codificação de vídeo 400 compreende portas de entrada 410 (ou portas de entrada 410) e unidades receptoras (Rx) 420 para receber dados; um processador, unidade lógica ou unidade de processamento central (CPU) 430 para processar os dados; unidades transmissoras (Tx) 440 e portas de saída 450 (ou portas de saída 450) para transmitir os dados; e uma memória 460 para armazenar os dados. O dispositivo de codificação de vídeo 400 também pode compreender componentes ópticos para elétricos (OE) e componentes elétricos para ópticos (EO)
acoplados às portas de entrada 410, as unidades receptoras 420, as unidades transmissoras 440 e as portas de saída 450 para saída ou entrada de sinais ópticos ou elétricos.
[000147] O processador 430 é implementado por hardware e software. O processador 430 pode ser implementado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de múltiplos núcleos), FPGAs, ASICs e DSPs. O processador 430 está em comunicação com as portas de ingresso 410, unidades receptoras 420, unidades transmissoras 440, portas de saída 450 e memória 460. O processador 430 compreende um módulo de codificação 470. O módulo de codificação 470 implementa as modalidades divulgadas descritas acima. Por exemplo, o módulo de codificação 470 implementa, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470, portanto, fornece uma melhoria substancial para a funcionalidade do dispositivo de codificação de vídeo 400 e efetua uma transformação do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação 470 é implementado como instruções armazenadas na memória 460 e executadas pelo processador
430.
[000148] A memória 460 pode compreender um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados de fluxo excessivo, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lido durante a execução do programa. A memória 460 pode ser, por exemplo, volátil e/ou não volátil e pode ser uma memória somente leitura (ROM),
memória de acesso aleatório (RAM), memória endereçável por conteúdo ternário (TCAM) e/ou memória de acesso aleatório estática (SRAM).
[000149] A FIG. 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como um ou ambos o dispositivo de origem 12 e o dispositivo de destino 14 da FIG. 1 de acordo com uma modalidade exemplar.
[000150] Um processador 502 no aparelho 500 pode ser uma unidade de processamento central. Alternativamente, o processador 502 pode ser qualquer outro tipo de dispositivo, ou múltiplos dispositivos, capazes de manipular ou processar informações agora existentes ou desenvolvidas no futuro. Embora as implementações divulgadas possam ser praticadas com um único processador, como mostrado, por exemplo, o processador 502, vantagens em velocidade e eficiência podem ser alcançadas usando mais de um processador.
[000151] Uma memória 504 no aparelho 500 pode ser um dispositivo de memória somente leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implementação. Qualquer outro tipo adequado de dispositivo de armazenamento pode ser usado como a memória 504. A memória 504 pode incluir código e dados 506 que são acessados pelo processador 502 usando um barramento 512. A memória 504 pode incluir ainda um sistema operacional 508 e programas de aplicativos 510, os programas de aplicativos 510 incluindo pelo menos um programa que permite que o processador 502 realize os métodos descritos aqui. Por exemplo, os programas de aplicativo 510 podem incluir aplicativos de 1 a N, que incluem ainda um aplicativo de codificação de vídeo que realiza os métodos descritos aqui.
[000152] O aparelho 500 também pode incluir um ou mais dispositivos de saída, como uma tela 518. A tela 518 pode ser, em um exemplo, uma tela sensível ao toque que combina uma tela com um elemento sensível ao toque que é operável para detectar entradas de toque. A tela 518 pode ser acoplada ao processador 502 por meio do barramento 512.
[000153] Embora representado aqui como um único barramento, o barramento 512 do aparelho 500 pode ser composto de vários barramentos. Além disso, o armazenamento secundário 514 pode ser diretamente acoplado a outros componentes do aparelho 500 ou pode ser acessado através de uma rede e pode compreender uma única unidade integrada, como um cartão de memória, ou várias unidades, como vários cartões de memória. O aparelho 500 pode, assim, ser implementado em uma ampla variedade de configurações.
[000154] A FIG. 6 ilustra um diagrama esquemático de uma pluralidade de modos de intra predição usados no esquema HEVC UIP. Para blocos de luminância, os modos de intra predição podem compreender até 36 modos de intra predição, que podem incluir três modos não direcionais e 33 modos direcionais. Os modos não direcionais podem compreender um modo de predição planar, um modo de predição médio (DC) e um modo de predição de croma de luma (LM). O modo de predição planar pode realizar previsões assumindo uma superfície de amplitude de bloco com uma inclinação horizontal e vertical derivada do limite do bloco. O modo de predição DC pode realizar predições assumindo uma superfície de bloco plana com um valor correspondente ao valor médio do limite de bloco. O modo de predição LM pode realizar predições assumindo que um valor de croma para o bloco corresponde ao valor de luma para o bloco.
[000155] A FIG. 7 mostra um exemplo de 67 modos de intra predição, por exemplo, como proposto para VVC, a pluralidade de modos de intra predição de 67 modos de intra predição compreendendo: modo planar (índice 0), modo dc (índice 1), e modos angulares com índices 2 a 66, em que o modo angular inferior esquerdo na FIG.7 se refere ao índice 2 e a numeração dos índices sendo incrementada até o índice 66 ser o modo angular superior direito da FIG. 7.
[000156] Como mostrado na FIG. 8, a partir da segunda versão, o VVC tem alguns modos correspondentes a direções de intra predição enviesadas, incluindo as de grande angular (mostradas como linhas tracejadas). Para qualquer um desses modos, para prever amostras dentro de um bloco, a interpolação de um conjunto de amostras de referência vizinhas deve ser realizada, se uma posição correspondente dentro de um lado do bloco for fracionária. HEVC e VVC usam interpolação linear entre duas amostras de referência adjacentes. JEM usa filtros de interpolação de 4 derivações mais sofisticados. Os coeficientes de filtro são selecionados para serem gaussianos ou cúbicos, dependendo da largura ou do valor de altura. A decisão de usar largura ou altura está harmonizada com a decisão sobre a seleção de lado de referência principal: quando o modo de intra predição é maior ou igual ao modo diagonal, o lado superior das amostras de referência é selecionado para ser o lado de referência principal e o valor da largura é selecionado para determinar o filtro de interpolação em uso. Caso contrário, a referência do lado principal é selecionada do lado esquerdo do bloco e a altura controla o processo de seleção do filtro.
Especificamente, se o comprimento do lado selecionado for menor ou igual a 8 amostras, 4 derivações de interpolação cúbica 4 é aplicado. Caso contrário, o filtro de interpolação é um Gaussiano de 4 derivações.
[000157] Semelhante à inter predição, a intra predição pode exigir filtragem de interpolação quando as amostras dentro de um bloco são preditas de acordo com um modo direcional de inclinação fracionária. Se o filtro linear for usado para este propósito, os coeficientes de filtro podem ser facilmente calculados se uma amostra em um bloco a ser predito cair em uma posição fracionária (sub-pel) dentro das amostras de referência. Portanto, o filtro linear não requer um LUT (Tabela de Pesquisa) para armazenar seu coeficiente. No entanto, pode ser usado em vez de cálculo direto. No entanto, se um módulo de predição usa filtros de interpolação de derivação longa (por exemplo, 4 ou 8 derivações), pode exigir um LUT para manter o coeficiente de filtros de interpolação como feito no módulo de inter predição onde DCT-IF de 8 derivações para luma e DCT-IF de 4 derivações para croma são tabulados como mostrado na Tabela 1 e Tabela 2, respectivamente. Tabela 1 - Especificação dos coeficientes de filtro de interpolação de inter predição luma fL[ p ] para cada 1/16 de posição de amostra fracionária p.
Posição Coeficientes de filtro de interpolação de amostra fracional p fL[p][0] fL[p][1] fL[p][2] fL[p][3] fL[p][4] fL[p][5] fL[p][6] fL[p][7] 1 0 1 −3 63 4 −2 1 0
2 −1 2 −5 62 8 −3 1 0 3 −1 3 −8 60 13 −4 1 0 4 −1 4 −10 58 17 −5 1 0 5 −1 4 −11 52 26 −8 3 −1 6 −1 3 −9 47 31 −10 4 −1 7 −1 4 −11 45 34 −10 4 −1 8 −1 4 −11 40 40 −11 4 −1 9 −1 4 −10 34 45 −11 4 −1 10 −1 4 −10 31 47 −9 3 −1 11 −1 3 −8 26 52 −11 4 −1 12 0 1 −5 17 58 −10 4 −1 13 0 1 −4 13 60 −8 3 −1 14 0 1 −3 8 62 −5 2 −1 15 0 1 −2 4 63 −3 1 0 Tabela 2 - Especificação dos coeficientes de filtro de interpolação de inter predição de croma fC[ p ] para cada 1/32 de posição de amostra fracionária p.
Posição Coeficientes de filtro de interpolação de amostra fracional p fC[ p ][ 0 ] fC[ p ][ 1 ] fC[ p ][ 2 ] fC[ p ][ 3 ] 1 −1 63 2 0 2 −2 62 4 0 3 -2 60 7 −1 4 −2 58 10 −2 5 −3 57 12 −2 6 −4 56 14 −2 7 −4 55 15 −2
8 −4 54 16 −2 9 −5 53 18 −2 10 −6 52 20 −2 11 −6 49 24 −3 12 −6 46 28 −4 13 −5 44 29 −4 14 −4 42 30 −4 15 −4 39 33 −4 16 −4 36 36 −4 17 −4 33 39 −4 18 −4 30 42 −4 19 −4 29 44 −5 20 −4 28 46 −6 21 −3 24 49 −6 22 −2 20 52 −6 23 −2 18 53 −5 24 −2 16 54 −4 25 −2 15 55 −4 26 −2 14 56 −4 27 −2 12 57 −3 28 −2 10 58 −2 29 −1 7 60 −2 30 0 4 62 −2 31 0 2 63 −1
[000158] Um conjunto particular de coeficientes pode ser definido como mostrado na Tabela 3. Tabela 3 - Especificação dos coeficientes de filtro de interpolação de intra predição fC e fG conforme descrito na especificação VVC de versão 3.
Posi- Coeficientes de filtro de Coeficientes de filtro ção de interpolação fC de interpolação fG amos- tra fC[p][0 fC[p][1 fC[p][2 fC[p][3 fG[p][ fG[p][ fG[p][ fG[p][ fracio ] ] ] ] 0] 1] 2] 3] nal p 0 0 64 0 0 16 32 16 0 1 −1 63 2 0 15 29 17 3 2 −2 62 4 0 15 29 17 3 3 −2 60 7 −1 14 29 18 3 4 −2 58 10 −2 13 29 18 4 5 −3 57 12 −2 13 28 19 4 6 −4 56 14 −2 13 28 19 4 7 −4 55 15 −2 12 28 20 4 8 −4 54 16 −2 11 28 20 5 9 −5 53 18 −2 11 27 21 5 10 −6 52 20 −2 10 27 22 5 11 −6 49 24 −3 9 27 22 6 12 −6 46 28 −4 9 26 23 6 13 −5 44 29 −4 9 26 23 6 14 −4 42 30 −4 8 25 24 7 15 −4 39 33 −4 8 25 24 7 16 −4 36 36 −4 8 24 24 8 17 −4 33 39 −4 7 24 25 8 18 −4 30 42 −4 7 24 25 8 19 −4 29 44 −5 6 23 26 9 20 −4 28 46 −6 6 23 26 9 21 −3 24 49 −6 6 22 27 9 22 −2 20 52 −6 5 22 27 10
23 −2 18 53 −5 5 21 27 11 24 −2 16 54 −4 5 20 28 11 25 −2 15 55 −4 4 20 28 12 26 −2 14 56 −4 4 19 28 13 27 −2 12 57 −3 4 19 28 13 28 −2 10 58 −2 4 18 29 13 29 −1 7 60 −2 3 18 29 14 30 0 4 62 −2 3 17 29 15 31 0 2 63 −1 3 17 29 15
[000159] A amostra intra predita é calculada coevoluindo com coeficientes definidos de acordo com o deslocamento de subpixel e o tipo de filtro da seguinte forma: "#$% = &∑ -.#”()*” + ∙ % + 320 ≫ 6.
[000160] Nesta equação " ≫ "Indica uma operação de deslocamento para direita bit a bit.
2
[000161] Um conjunto de coeficientes é obtido de uma tabela de pesquisa (LUT). A Tabela 3 dá um exemplo dos valores armazenados de acordo com o projeto atual do VVC descrito na especificação de versão 3 (JVET-L1001 "Codificação de Vídeo Versátil (Versão 3)"). A seleção entre filtros de interpolação de suavização (fG) e nitidez (fC) é realizada usando condições MDIS (Suavização Intra Dependente de Modo). Portanto, fC ou fG podem ser usados para gerar amostras preditas de um bloco.
[000162] Se o filtro de nitidez for selecionado, a amostra predita "#$% é ainda mais recortada para intervalo de valores permitido, que é definido usando SPS ou derivado da profundidade de bits do componente selecionado.
[000163] Para alguns casos de uso, pode ser benéfico evitar manter LUTs explícitos para filtros de interpolação,
uma vez que o manuseio de LUT requer memória adicional e, portanto, aumenta o consumo de energia, bem como o tamanho de matriz. O 1º é crítico para aplicações móveis. o 2º afeta negativamente o preço.
[000164] Para os casos de uso mencionados, é razoável definir analiticamente os coeficientes dos filtros de interpolação. Em vez de realizar uma busca de um LUT, os coeficientes de filtro podem ser calculados a partir da posição da amostra fracionária de entrada p.
[000165] De acordo com uma modalidade da presente divulgação, um método é fornecido para processamento de intra ou inter predição de um quadro de vídeo, compreendendo as etapas de: obter uma amostra de referência; obter um valor de um deslocamento de subpixel; e filtrar, usando um filtro de interpolação de 4 derivações de subpixel, a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel satisfazem: = 16 − 0 2 1 = 16 + 16 − 2 2 = 16 + 2 3 =2 em que p é uma parte fracionária do valor de deslocamento de subpixel, e 0, 1, 2, e 3 são os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel.
[000166] Em uma implementação exemplar, a(s) amostra(s) de referência podem ser referidas como ref[ x ], com ref[ x ] = p[ −1 − refIdx + x ][ −1 − refIdx ], with x = 0..nTbW + refIdx + 1. correspondendo a um arranjo de amostras de referência e
"p" referindo-se a um arranjo x-y bidimensional p [ x ] [ y ] contendo valores de amostra. O número de amostras de referência usadas pode ser pelo menos um. Em outro exemplo, o número de amostras de referência pode ser quatro.
[000167] Em uma implementação exemplar, o valor de deslocamento de subpixel obtido pode ser referido como (y + 1 + refIdx ) * intraPredAngle com "IntraPredAngle" sendo o valor de um ângulo de intra predição.
[000168] Em uma implementação exemplar, o valor de amostra predito "predSamples [x] [y]" pode ser obtido por predSamples[ x ][ y ] = Clip1( ( ( ∑32=0 fT[ i ] ∗ ref[ x + iIdx + i ] ) + 32 ) >> 6 ) com fT [i] referindo-se aos coeficientes de filtro. Esses coeficientes podem ser coeficientes de filtro de luma ou croma para a inter predição, referidos como fG e fC, respectivamente.
[000169] A seleção dos coeficientes de filtro sendo luma ou croma pode ser implementada pelo uso e configuração de um sinalizador "filterFlag", por exemplo, como fT[ j ] = filterFlag ? fG[ iFact ][ j ]: fC[ iFact ][ j ] com iFact = ( ( y + 1 + refIdx ) * intraPredAngle ) & 31.
[000170] O valor "31" refere-se à parte fracionária do valor de deslocamento de subpixel, e pode assumir outros valores diferentes de "31". Os valores dos coeficientes de filtro fG (luma) e/ou fC (croma) podem ser obtidos analiticamente em tempo real usando a expressão analítica acima para os coeficientes de filtro do filtro de 4 derivações. Assim, os coeficientes de filtro são definidos de acordo com o valor de deslocamento de subpixel.
[000171] Os coeficientes de filtro são, portanto, obtidos sem acessar os respectivos valores dos coeficientes de filtro a partir de um LUT, mas sim obtidos por cálculo.
[000172] Alternativamente, os coeficientes de filtro podem ser calculados usando as equações acima, e os valores podem ser armazenados em um LUT.
[000173] De acordo com uma modalidade da presente divulgação, os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos em uma tabela da seguinte forma: p 0 16 32 16 0 1 16 32 16 0 2 15 31 17 1 3 15 31 17 1 4 14 30 18 2 5 14 30 18 2 6 13 29 19 3 7 13 29 19 3 8 12 28 20 4 9 12 28 20 4 10 11 27 21 5 11 11 27 21 5 12 10 26 22 6 13 10 26 22 6 14 9 25 23 7 15 9 25 23 7 16 8 24 24 8
[000174] De acordo com uma modalidade da presente divulgação, um método é fornecido para processamento de intra ou inter predição de um quadro de vídeo, compreendendo as etapas de: obter uma amostra de referência; obter um valor de um deslocamento de subpixel; e filtrar, usando um filtro de interpolação de 4 derivações de subpixel, a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos como segue:
p 0 1 2 3
0 16 32 16 0 1 16 32 16 0 2 15 31 17 1 3 15 31 17 1 em que p é uma parte fracionária do valor do deslocamento de subpixel, e 0, 1, 2, e 3 são os coeficientes de filtro.
[000175] Em uma implementação exemplar, os valores dos coeficientes de filtro podem ser armazenados em um LUT. Isso significa que para a filtragem de interpolação de subpixel, os respectivos valores dos coeficientes de filtro devem ser buscados no LUT.
[000176] A FIG. 23 mostra um fluxograma do processamento de intra/inter predição. Na etapa 2301, uma amostra de referência é obtida. A amostra de referência pode incluir uma ou mais amostras de referência. Na etapa 2302, um valor de deslocamento de subpixel é então obtido. Na etapa 2303, a amostra de referência é então filtrada usando o filtro de interpolação de subpixel com coeficientes de filtro 2 com i = 0, … 3. Isso é conhecido como filtro de 4 derivações e/ou filtro de 4 pontos.
[000177] Os coeficientes de filtro podem ser obtidos a partir de expressões analíticas com a parte fracionária p do valor de deslocamento de subpixel. Os coeficientes de filtro também podem ser obtidos a partir de um LUT com referência a valores de p.
[000178] De acordo com uma modalidade da presente divulgação, um bit de p é definido como zero.
[000179] De acordo com uma modalidade da presente divulgação, p é incrementado em 1 e posteriormente um bit inferior do p incrementado é definido como zero antes do referido p ser usado para obter os coeficientes de filtro.
[000180] De acordo com uma modalidade da presente divulgação, a obtenção dos coeficientes de filtro compreende a etapa de cálculo dos coeficientes de filtro de acordo com
= 16 − 0 2 1= 16 + 0 2 = 0+ 3 = 0− .
[000181] Isso pode fornecer uma vantagem de calcular um coeficiente de filtro 2+1 a partir de um coeficiente de filtro anterior 2. Isso pode reduzir ainda mais o tempo para calcular os coeficientes de filtro.
[000182] A invenção proposta permite que ambas as abordagens derivem coeficientes de filtro: buscas de LUT e cálculo direto de acordo com as equações propostas.
[000183] Uma das características do filtro de interpolação consiste em uma dependência linear de seu deslocamento de fase na posição de amostra fracionária p. As modalidades da invenção utilizam esta dependência para obter o valor de um coeficiente de filtro usando operações simples sobre a posição de amostra fracionária p.
[000184] Uma dependência linear é usada para derivar coeficientes de filtro de interpolação de suavização fG. A derivação dos coeficientes de filtro de interpolação de nitidez fC é baseada na obtenção de um valor absoluto de uma expressão linear com base em p.
[000185] De acordo com uma modalidade da presente divulgação, um método de codificação de vídeo é fornecido, o método compreende o processamento de intra predição de um bloco de um quadro de vídeo, compreendendo: filtrar, usando um filtro de interpolação de 4 derivações de subpixel, de uma amostra de referência do quadro de vídeo; em que o filtro de interpolação de 4 derivações de subpixel é uma combinação de filtros, com coeficientes de filtro de pelo menos um dos filtros satisfazendo:
= 16 − 0 2 1 = 16 + 16 − 2 2 = 16 + 2 = 3 2 em que p é uma posição de amostra fracionária de um deslocamento de subpixel, e 0 , 1 , 2 , e 3 são os coeficientes de filtro.
[000186] A FIG. 24 mostra um fluxograma da codificação de vídeo. Na etapa 2410, o processamento de intra predição é realizado filtrando uma amostra de referência de um bloco, usando um filtro de interpolação de 4 derivações de subpixel.
[000187] De acordo com uma modalidade da presente divulgação, o filtro de interpolação de 4 derivações de subpixel é um filtro de suavização que é uma combinação paralela de dois filtros lineares dependentes de fase e um filtro passa-baixa.
[000188] De acordo com uma modalidade da presente divulgação, o filtro de interpolação de 4 derivações de subpixel é um filtro de nitidez que é uma combinação paralela de um filtro linear dependente de fase e filtro passa-alta de variação de intensidade.
[000189] De acordo com uma modalidade da presente divulgação, o filtro passa-alta de variação de intensidade é um filtro de resposta de impulso finita de passa-alta independente de fase, FIR, a saída do qual é multiplicada por um parâmetro de intensidade dependente de fase.
[000190] De acordo com qualquer uma das modalidades anteriores da presente divulgação, um bit inferior de p é definido como zero.
[000191] De acordo com uma modalidade da presente divulgação, p é incrementado em 1 e posteriormente o bit inferior do valor incrementado é definido como zero antes que este valor seja usado para derivar coeficientes de filtro de interpolação.
[000192] De acordo com uma modalidade da presente divulgação, a operação de recorte é realizada para a saída do filtro passa-alta de variação de intensidade.
[000193] As modalidades da invenção expressam o coeficiente de filtro como uma combinação de dois ou mais filtros FIR (resposta de impulso finito). Esta combinação pode incluir as seguintes opções: - combinação sequencial, ou seja, uma convolução dos coeficientes; - combinação paralela, ou seja, soma ponderada dos coeficientes.
[000194] Cada um desses filtros pode ou não depender do parâmetro de fase P, que é uma função da posição de amostra fracionária p. Os coeficientes dos filtros pertencentes à combinação têm uma representação simples do parâmetro de fase P.
[000195] Em uma modalidade, na Fig. 9, um conjunto de amostras de referência é introduzido no filtro de interpolação.
[000196] Em uma modalidade, para o caso de filtro de interpolação de suavização, o valor do parâmetro de fase P é o mesmo que o valor da posição de amostra fracionária p. Na Fig. 9, os blocos F1 e F2 representam filtros de interpolação linear. Os coeficientes para cada um desses filtros são expressos a partir do parâmetro de fase p da seguinte forma:
0 = 16 − 2, 1 = 2.
[000197] Em um exemplo, aqui e posteriormente, a operação de divisão poderia ser definida com ou sem arredondamento, ou seja: = 9 ≫ :, 9 2: ou = #9 + 2:−1 % ≫ :, 9 2: em que "a" é um nominador de divisão e "n" é uma potência de dois parâmetros do denominador.
[000198] O bloco F3 representa um filtro passa-baixa de duas derivações, com coeficientes constantes: 0 = 16, 1 = 16.
[000199] Em um exemplo, os filtros F1.. F3 são não normalizados, F3 tem um ganho DC maior que F1 e F3 tem um ganho DC maior que F2.
[000200] A saída dos filtros F1.. F3 são somados e normalizados. A normalização (bloco ">>") pode ser realizada, por exemplo, por um deslocamento à direita ou por divisão com arredondamento conforme descrito acima.
[000201] A equação resultante para esta combinação (filtro de 4 derivações equivalente) é expressa da seguinte = 16 − forma: ⎧ 0 2 ⎪ ⎪ 1 = 16 + 16 − 2 ⎨ = 16 + ⎪ 2 2 ⎪ ⎩ = 3 2
[000202] Esta modalidade permite uma implementação baseada em LUT. De acordo com esta implementação, os valores dos coeficientes também podem ser definidos usando um LUT. Os valores armazenados neste LUT são definidos na Tabela 4 (para ambos os casos: com e sem arredondamento). Tabela 4 - Especificação do coeficiente de filtro de interpolação de intra predição do filtro de suavização.
Com arredondamento Sem arredondamento p 0 1 2 3 0 1 2 3 0 16 32 16 0 16 32 16 0 1 15 31 17 1 16 32 16 0 2 15 31 17 1 15 31 17 1 3 14 30 18 2 15 31 17 1 4 14 30 18 2 14 30 18 2 5 13 29 19 3 14 30 18 2 6 13 29 19 3 13 29 19 3 7 12 28 20 4 13 29 19 3 8 12 28 20 4 12 28 20 4 9 11 27 21 5 12 28 20 4 10 11 27 21 5 11 27 21 5 11 10 26 22 6 11 27 21 5 12 10 26 22 6 10 26 22 6 13 9 25 23 7 10 26 22 6 14 9 25 23 7 9 25 23 7 15 8 24 24 8 9 25 23 7 16 8 24 24 8 8 24 24 8 17 7 23 25 9 8 24 24 8 18 7 23 25 9 7 23 25 9 19 6 22 26 10 7 23 25 9 20 6 22 26 10 6 22 26 10 21 5 21 27 11 6 22 26 10
[000203] A partir da Tabela 4 pode-se notar que os coeficientes estão dentro da faixa de [0, 31]. Este fato explica o benefício técnico da invenção que consiste na possibilidade de utilizar multiplicadores de 16 bits para as imagens de 8 e 10 bits que são utilizadas e serão utilizadas, pelo menos, na perspectiva de médio prazo com maior frequência. Uma implementação típica da invenção compreenderia quatro operações de multiplicação paralela, em que os operandos de multiplicação têm profundidades de bits de, no máximo, 6 para coeficientes de filtro e 10 para amostras. O resultado da multiplicação não ultrapassaria um valor de 16 bits, tornando os coeficientes propostos amigáveis do ponto de vista da implementação.
[000204] No modo de inter predição, uma compensação de movimento de bloco é realizada. A compensação de movimento pode compreender uma etapa de filtragem de interpolação, que é semelhante à filtragem de intra interpolação. Outra propriedade benéfica da invenção é que os coeficientes dos filtros de interpolação têm a mesma precisão (isto é, a profundidade de bits dos valores dos coeficientes é a mesma)
para os modos de intra e inter predição. Se a precisão dos coeficientes de filtro de interpolação for maior no caso de intra predição, isso pode afetar adversamente a complexidade computacional de um codec de vídeo. A razão é que a intra predição é inerentemente sequencial, pois requer amostras reconstruídas de blocos anteriores. Em contraste, a inter predição pode ser realizada em paralelo. Portanto, se a precisão da interpolação for maior para intra predição do que para inter, isso pode aprofundar o desequilíbrio de implementação entre os pipelines de intra e inter predição. Este alinhamento de precisão permite evitar tais consequências negativas.
[000205] Outro benefício da invenção proposta é a redução da diversidade dos coeficientes. Considerando que os pares de linhas vizinhas da Tabela 4 são idênticos, uma implementação prática da invenção buscaria de um LUT que tem apenas 16 linhas (as linhas correspondendo a valores pares de p no caso "Sem arredondamento", e as linhas correspondentes a valores ímpares de p no caso "Com arredondamento") em vez de 32 linhas.
[000206] Um efeito técnico da invenção é que permite, pelo menos, os seguintes tipos de implementações: - Implementações sem LUT que calculam coeficientes de filtro usando valores de p, em que o cálculo é baseado nas equações analíticas descritas acima; e - Implementações baseadas em LUT que buscam coeficientes de filtro de uma LUT usando um valor de índice baseado em um valor de p.
[000207] A precisão do valor de p é reduzida ao calcular os valores dos coeficientes. Em particular, o valor dos coeficientes é derivado com base no resultado da divisão 2 inteira por 2, ou seja, que pode ser implementado como um deslocamento à direita de 1, que é simplesmente implementável em hardware. Para implementações baseadas em LUT, essa redução de precisão resulta na redução da memória necessária para armazenar o LUT. No hardware, isso também reduziria o número de fios de um barramento de endereço da LUT.
[000208] De acordo com uma modalidade da presente divulgação, um aparelho é fornecido para processamento intra ou inter predição de um quadro de vídeo, incluindo: uma unidade de obtenção de amostra de referência configurada para obter uma amostra de referência; uma unidade de obtenção de valor de deslocamento de subpixel configurada para obter um valor de um deslocamento de subpixel; e um filtro de interpolação de 4 derivações de subpixel configurado para filtrar a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel satisfazem: = 16 − 0 2 1 = 16 + 16 − 2 2 = 16 + 2 3 =2 em que p é uma parte fracionária do valor do deslocamento de subpixel, e 0, 1, 2, e 3 são os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel.
[000209] De acordo com uma modalidade da presente divulgação, os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos em uma tabela da seguinte forma: p 0 1 2 3
[000210] De acordo com uma modalidade da presente divulgação, um aparelho é fornecido para processamento intra ou inter predição de um quadro de vídeo, compreendendo: uma unidade de obtenção de amostra de referência configurada para obter uma amostra de referência; uma unidade de obtenção de valor de deslocamento de subpixel configurada para obter um valor de um deslocamento de subpixel; e um filtro de interpolação de 4 derivações de subpixel configurado para filtrar a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos como a seguir:
p 0 1 2 3
0 16 32 16 0 1 16 32 16 0 2 15 31 17 1 3 15 31 17 1 4 14 30 18 2 5 14 30 18 2 6 13 29 19 3 7 13 29 19 3 8 12 28 20 4 9 12 28 20 4 10 11 27 21 5 11 11 27 21 5 12 10 26 22 6 em que p é uma parte fracionária do valor do deslocamento de subpixel, e 0, 1, 2, e 3 são os coeficientes de filtro.
[000211] A FIG. 25 mostra um esquemático do Módulo de Processamento Intra/Inter 2500, que compreende uma unidade de obtenção de amostra de referência 2510, uma unidade de obtenção de valor de deslocamento de subpixel 2520, e um filtro de interpolação de subpixel 2530.
[000212] De acordo com uma modalidade da presente divulgação, um aparelho é fornecido para codificação de vídeo que compreende: uma unidade de processamento de intra predição configurada para realizar intra predição de um bloco de um quadro de vídeo; e um filtro de interpolação de 4 derivações de subpixel configurado para filtrar uma amostra de referência do quadro de vídeo; em que o filtro de interpolação de 4 derivações de subpixel é uma combinação de filtros, com coeficientes de filtro de pelo menos um dos = 16 − filtros satisfazendo: 0 2 1 = 16 + 16 − 2 2 = 16 + 2 3 =2 em que p é uma posição de amostra fracionária de um deslocamento de subpixel, e 0 , 1 , 2 , e 3 são os coeficientes de filtro.
[000213] A FIG. 26 mostra um esquemático do Módulo de Codificação de Vídeo 2600, que compreende uma unidade de processamento de intra predição 2610 e um filtro de interpolação de subpixel 2620.
[000214] De acordo com uma modalidade da presente divulgação, um codificador (20) é fornecido, compreendendo circuitos de processamento para realizar o método de acordo com qualquer uma das modalidades anteriores da presente divulgação.
[000215] De acordo com uma modalidade da presente divulgação, um decodificador (30) é fornecido, compreendendo circuitos de processamento para realizar o método de acordo com qualquer uma das modalidades anteriores da presente divulgação.
[000216] De acordo com uma modalidade da presente divulgação, um produto de programa de computador é fornecido, compreendendo um código de programa para realizar o método de acordo com qualquer uma das modalidades anteriores da presente divulgação.
[000217] De acordo com uma modalidade da presente divulgação, um decodificador é fornecido, compreendendo: um ou mais processadores; e um meio de armazenamento legível por computador não transitório acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método de acordo com qualquer uma das modalidades anteriores da presente divulgação.
[000218] De acordo com uma modalidade da presente divulgação, um codificador é fornecido, compreendendo: um ou mais processadores; e um meio de armazenamento legível por computador não transitório acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para realizar o método de acordo com qualquer uma das modalidades anteriores da presente divulgação.
[000219] A presente divulgação de acordo com qualquer uma das modalidades anteriores pode fornecer uma vantagem de realizar a intra/inter predição de um quadro de vídeo de maneira rápida. A razão disso é que os coeficientes de filtro de interpolação são obtidos de forma analítica, ou seja, os referidos coeficientes são calculados em tempo real. Isso evita armazenar os coeficientes em uma tabela de pesquisa (LUT), exigindo tempo de acesso para ler os coeficientes da memória.
[000220] Assim, a predição se torna mais eficiente e requer menos demanda de memória necessária. Isso permite também uma implementação de baixo custo da predição. Além disso, uma vez que os coeficientes de filtro analítico 2 são lineares na posição de amostra fracionária p, e envolvem operações de divisão por 2, a operação respectiva pode ser realizada de forma eficiente empregando operações de bit de baixo nível rápidas. O respectivo tempo para realizar a operação de bit e para calcular os coeficientes de filtro é menor que o tempo para acessar os coeficientes armazenados a partir do LUT. Assim, a latência é reduzida.
[000221] Além disso, a estrutura analítica particular dos coeficientes de filtro pode fornecer uma vantagem de uma implementação de baixa complexidade da(s) unidade(s) de filtro. Acima, a resposta de filtro (isto é, resposta de frequência) para diferentes posições de subpixel é consistente com respeito à magnitude e fase e evita artefatos na resposta, em particular em altas frequências. A linearidade dos coeficientes de filtro pode fornecer uma vantagem de reutilizar o hardware.
[000222] Em uma modalidade, para o caso de filtro de interpolação de nitidez, um parâmetro de intensidade S é definido como segue: ?= .@A| CA.@| @ .
[000223] Este parâmetro de intensidade S é definido para ter um valor máximo na posição de meio pel (p = 16). Para as posições de subpixel perto de inteiros, o parâmetro de intensidade S tem um valor inferior. Uma combinação exemplar de filtros é mostrada na Fig. 10. O bloco F1 nesta figura representa um filtro linear, com seus coeficientes definidos da seguinte forma:
0 = 64 − # ≪ 1%, 1 = ≪ 1.
[000224] O bloco F2 representa um filtro passa-alta 0 = −1 com os seguintes coeficientes: 1 =1 2 =1 3 = −1
[000225] A saída do bloco F2 está sendo multiplicada por um parâmetro de intensidade S. O resultado da multiplicação é ainda somado com a saída do filtro linear F1, e a soma resultante é normalizada.
[000226] A equação resultante para esta combinação (filtro de 4 derivações equivalente) é expressa da seguinte = −? forma: 0 1 = 64 − # ≪ 1% + ? 2 = # ≪ 1% + ? 3 = −?
[000227] Para esta equação, uma implementação baseada em LUT também é possível. A Tabela 5 fornece os valores dos coeficientes. Tabela 5 - Especificação do coeficiente de filtro de interpolação de intra predição do filtro de nitidez p 0 1 2 3 0 0 64 0 0 1 0 62 2 0 2 0 60 4 0 3 -1 59 7 -1 4 -1 57 9 -1 5 -1 55 11 -1 6 -2 54 14 -2 7 -2 52 16 -2
8 -3 51 19 -3 9 -3 49 21 -3 10 -3 47 23 -3 11 -4 46 26 -4 12 -4 44 28 -4 13 -4 42 30 -4 14 -5 41 33 -5 15 -5 39 35 -5 16 -6 38 38 -6 17 -5 35 39 -5 18 -5 33 41 -5 19 -4 30 42 -4 20 -4 28 44 -4 21 -4 26 46 -4 22 -3 23 47 -3 23 -3 21 49 -3 24 -3 19 51 -3 25 -2 16 52 -2 26 -2 14 54 -2 27 -1 11 55 -1 28 -1 9 57 -1 29 -1 7 59 -1 30 0 4 60 0 31 0 2 62 0
[000228] Como o filtro F2 tem coeficientes negativos, o resultado normalizado é ainda mais recortado para caber na faixa de valores permitidos que podem ser sinalizados no SPS ou derivados da profundidade de bits das amostras.
[000229] Uma modalidade alternativa é especificar a posição alternativa da operação de recorte (ver Fig. 11). Este projeto alternativo é baseado no fato de que o filtro linear F1 não pode ter um valor de saída inferior ou superior a qualquer um de seus valores de entrada.
[000230] Em uma modalidade, o bloco de recorte opera usando as seguintes etapas.
[000231] A primeira etapa é determinar a realização do limite mínimo ou limite máximo.
[000232] A segunda etapa depende do resultado da etapa um. Especificamente, o limite mínimo ou máximo é realizado.
[000233] Limite mínimo é aplicado no caso em que a entrada para o bloco de recorte é negativa. Caso contrário, o limite máximo é aplicado. A saída Ec da etapa dois (e do E < 0, Ecmin bloco de recorte) pode ser definido da seguinte forma: Ec = F otherwise, Ecmax .
[000234] Para um valor de entrada E, a saída do limite mínimo Ecmin é calculada da seguinte forma: Ecmin = −min #−E, %. min#refx ,refx−1 %
S
[000235] A saída do limite máximo é calculada da seguinte forma: Ecmax = min #E, max −max#refx ,refx−1 %
S %, em que max é o valor máximo da faixa de valores permitidos da amostra.
[000236] Valores refx e refx−1 são amostras de referência de entrada mostradas na Fig. 11, que são uma entrada do filtro linear F1.
[000237] Em uma modalidade, no caso de o recorte ser realizado após a operação de multiplicação, Ec é calculado da seguinte forma:
E < 0, − min&−E, min#refx , refx−1 %0 Ec = ! otherwise, min LE, max − max#refx , refx−1 %M .
[000238] Em algumas modalidades, o filtro F3 na Fig. 9, o filtro F2 nas Fig. 10 e Fig. 11 podem não depender do parâmetro de fase P. Essas modalidades simplificam a implementação, pois a saída desses filtros pode ser a mesma para cada linha de entrada de amostras preditas, portanto, esta etapa pode ser realizada antes de iniciar o processo de interpolação, por exemplo, no estágio do processo de filtragem da amostra de referência. Essa abordagem aumenta o paralelismo e, portanto, reduz a latência da filtragem direcional.
[000239] Outra modalidade alternativa (ver Fig. 12) usa filtro de intensidade ajustável, não apenas multiplicador da saída do filtro. A Fig. 12A mostra o caso em que o recorte é realizado para a saída do filtro passa- alta F2. A Fig. 12B mostra o caso em que o recorte é realizado para a saída da saída normalizada da combinação de F1 e F2. Exemplos de filtros de intensidade ajustável podem ser os seguintes: filtro bilateral, filtro de transformação inversa, etc.
[000240] Outra modalidade usa resolução reduzida de p, ou seja, apenas 16 de 32 entradas são usadas. Isso é obtido, por exemplo, definindo o bit menos significativo de p como zero.
[000241] Conforme mostrado nas Figs. 13-21, diferentes combinações de representações baseadas em LUT e analíticas de coeficientes de filtro de interpolação são possíveis para intra e inter predição. Por exemplo, a Fig. 14 ilustra o caso de uso em que os coeficientes para o filtro de interpolação de suavização usados no caso de intra predição são calculados, enquanto os coeficientes para outros filtros de interpolação para intra e inter predição são armazenados em LUTs. Além disso, a especificação de codificação de vídeo pode incluir representações baseadas em LUT e analíticas de coeficientes de filtro de interpolação para permitir diferentes implementações. Se ambas as representações forem descritas, a representação baseada em LUT e a representação analítica devem fornecer coeficientes idênticos.
[000242] A Fig. 22 representa uma implementação do método de cálculo de coeficientes mostrado na Fig. 1.
= −?
[000243] Na equação 0 1 = 64 − # ≪ 1% + ? 2 = # ≪ 1% + ? 3 = −? um parâmetro de intensidade S é definido como segue: ?= .@A| CA.@| @ .
[000244] Esta implementação corresponde à forma diferente de derivar o parâmetro de intensidade S (denotado como um valor resultante de "N" na Fig. 22). O valor da posição de amostra fracionária é encaminhado para o demultiplexador DEMUX, que é controlado pelo sinal SEL 1-bit de entrada, que é definido como o valor do 5º bit menos significativo de (tendo um índice de 4 se a indexação começar do zero). Se este bit for igual a "1", o sinal SEL indica que o valor de é maior que 16 e o seguinte valor deve ser calculado: N = − ( not (31 xor ) ), onde "not" e "xor" são operações bit a bit NOT e XOR, respectivamente. Esta expressão é equivalente a N = (32 -
) e pode ser escrito nas linguagens de programação C/C++ como N = -(~(0x1F ^ )).
[000245] Caso contrário (ou seja, se o sinal de entrada SEL do demultiplexador DEMUX for igual a "0"), quaisquer cálculos são ignorados e o sinal p é encaminhado para o multiplexador MUX como o sinal q. O sinal de saída r do multiplexador MUX é passado para o módulo que calcula o valor de O do seguinte modo: O = ((( << 1) + () >> 3, onde "<<" e ">>" são operações de deslocamento à esquerda e à direita, respectivamente.
[000246] Na verdade, este valor de O é um parâmetro de intensidade S. Otimização adicional é possível realizando as etapas mostradas na Fig. 22 em paralelo com aquele dos coeficientes de filtro linear: z = (64 – (p << 1))
[000247] Assim que os valores de z e S forem calculados, eles podem ser adicionados um ao outro para obter 1 = P + ?.
[000248] Embora as modalidades da invenção tenham sido descritas principalmente com base na codificação de vídeo, deve-se notar que as modalidades do sistema de codificação 10, codificador 20 e decodificador 30 (e correspondentemente o sistema 10) e as outras modalidades aqui descritas também podem ser configuradas para processamento ou codificação de imagem, isto é, o processamento ou codificação de uma imagem individual independente de qualquer imagem precedente ou consecutiva como na codificação de vídeo. Em geral, apenas unidades de inter predição 244 (codificador) e 344
(decodificador) podem não estar disponíveis no caso de a codificação de processamento de imagem ser limitada a uma única imagem 17. Todas as outras funcionalidades (também referidas como ferramentas ou tecnologias) do codificador de vídeo 20 e do decodificador de vídeo 30 podem igualmente ser usadas para processamento de imagens estáticas, por exemplo, cálculo residual 204/304, transformação 206, quantização 208, quantização inversa 210/310, transformação (inversa) 212/312, particionamento 262/362, intra predição 254/354 e/ou filtragem de circuito 220, 320 e codificação por entropia 270 e decodificação por entropia 304.
[000249] As modalidades, por exemplo, do codificador 20 e do decodificador 30, e as funções aqui descritas, por exemplo, com referência ao codificador 20 e ao decodificador 30, podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em um meio legível por computador ou transmitidas através de meios de comunicação como uma ou mais instruções ou código e executadas por uma unidade de processamento baseada em hardware. A mídia legível por computador pode incluir mídia de armazenamento legível por computador, que corresponde a um meio tangível, como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta forma, a mídia legível por computador geralmente pode corresponder a (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) um meio de comunicação, como um sinal ou onda portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[000250] A título de exemplo, e não de limitação, esses meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser usado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que pode ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada meio legível por computador. Por exemplo, se as instruções são transmitidas de um website, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra ótica, par trançado, DSL ou tecnologias sem fio, como infravermelho, rádio e micro- ondas, estão incluídos na definição de meio. Deve ser entendido, no entanto, que a mídia de armazenamento legível por computador e a mídia de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas são direcionadas para meios de armazenamento tangíveis não transitórios. Discos (disk e disc), conforme usados aqui, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD),
disquete, disco blu-ray onde os discos (disk) geralmente reproduzem dados magneticamente, enquanto os discos (disc) reproduzem dados opticamente com lasers. As combinações dos itens acima também devem ser incluídas no escopo de meio legível por computador.
[000251] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados específicos de aplicação (ASICs), matrizes lógicas programáveis em campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo "processador", conforme usado neste documento, pode referir-se a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida em módulos de hardware e/ou software dedicados configurados para codificação e decodificação ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[000252] As técnicas desta divulgação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não necessariamente requerem a realização por diferentes unidades de hardware. Em vez disso,
conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware inter operativas, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequados.
[000253] Resumindo, a presente divulgação se refere a intra ou inter predição para codificação e decodificação de vídeo. Para esse propósito, um aparelho e métodos obtêm uma amostra de referência e um valor de deslocamento de subpixel. Um filtro de interpolação de 4 derivações de subpixel é usado para filtrar a amostra de referência para obter um valor de amostra predito. Os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos de acordo com o valor do deslocamento de subpixel, como 0 = 16 − 2 , 1 = 16 + 16 − 2 , 2 = 16 + 2 , e 3 = 2 , com p sendo uma parte fracionária do valor do deslocamento de subpixel.
[000254] Modalidades adicionais são resumidas nas seguintes cláusulas: Cláusula 1: Método para processo de intra ou inter predição de tecnologia de codificação de vídeo, o método compreende: obter uma amostra de referência (ou seja, pelo menos uma amostra de referência, em um exemplo, uma quantidade das amostras de referência pode ser quatro); obter um valor de deslocamento de subpixel; e filtrar, usando um filtro de interpolação de subpixel, a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de subpixel são obtidos de acordo com o valor de deslocamento de subpixel.
Cláusula 2: O método da Cláusula 1, em que o coeficiente de filtro do filtro de interpolação de subpixel é obtido de acordo com a parte fracionária do valor do deslocamento de subpixel.
Cláusula 3: O método da cláusula 1 ou 2, em que o filtro de interpolação de subpixel é um filtro de 4 derivações equivalente.
Cláusula 4: O método da Cláusula 3, em que os coeficientes de filtro do filtro de interpolação de subpixel
= 16 − são obtidos de acordo com 0 2 1 = 16 + 16 − 2 = 16 + 2 2 = 3 2 em que p é uma parte fracionária do valor do deslocamento de subpixel.
Cláusula 5: O método da Cláusula 3, em que os coeficientes de filtro do filtro de interpolação de
0 = −? subpixel são obtidos de acordo com
1 = 64 − # ≪ 1% + ? 2 = # ≪ 1% + ? 3 = −?
em que um parâmetro de intensidade S é definido como
48 − |3 − 48| segue: ?= 8 em que p é uma parte fracionária do valor do deslocamento de subpixel.
Cláusula 6: O método de qualquer uma das Cláusulas 1 a 5, em que um bit (por exemplo, um bit mais baixo ou um bit inferior) do deslocamento de subpixel p é definido como zero.
Cláusula 7: O método de qualquer uma das Cláusulas 1 a 5, em que o valor do deslocamento de subpixel p é incrementado em 1 e, posteriormente, o bit inferior do valor incrementado é definido como zero antes que este valor seja usado para derivar coeficientes de filtro. Cláusula 8: Um método de codificação de vídeo, o método compreende processamento de intra predição de um bloco, compreendendo filtragem de interpolação de subpixel aplicada a amostras de referência; em que o filtro de interpolação de subpixel é uma combinação de filtros, pelo menos um dos filtros é determinado de acordo com o deslocamento de subpixel. Cláusula 9: O método da Cláusula 8, em que o filtro de interpolação é um filtro de suavização que é uma combinação paralela de dois filtros lineares dependentes de fase e um filtro passa-baixa. Cláusula 10: O método da Cláusula 8, em que o filtro de interpolação é um filtro de nitidez que é uma combinação paralela de um filtro linear dependente de fase e filtro passa-alta de variação de intensidade Cláusula 11: O método da Cláusula 10, em que o filtro passa-alta de variação de intensidade é um filtro FIR passa- alta independente de fase, a saída do qual é multiplicada por um parâmetro de intensidade dependente de fase. Cláusula 12: O método da Cláusula 9, em que a combinação de um filtro é um filtro de 4 derivações equivalente tendo coeficientes especificados de acordo com as equações:
= 16 − 0 2 1 = 16 + 16 − 2 2 = 16 + 2 = 3 2 em que p é uma posição de amostra fracionária p. Cláusula 13: O método da Cláusula 11, em que a combinação de um filtro é um filtro de 4 derivações equivalente tendo coeficientes especificados de acordo com 0 = −? as equações: 1 = 64 − # ≪ 1% + ? 2 = # ≪ 1% + ? 3 = −? em que um parâmetro de intensidade S é definido como segue: ?= .@A| CA.@| @ .
Cláusula 14: Método de qualquer uma das Cláusulas anteriores, em que o bit inferior da posição de amostra fracionária p é definido como zero. Cláusula 15: Método de qualquer uma das Cláusulas 8-13, em que a posição de amostra fracionária p é incrementada em 1 e, posteriormente, o bit inferior do valor incrementado é definido como zero antes que este valor seja usado para derivar os coeficientes de filtro de interpolação. Cláusula 16: O método da Cláusula 10 ou 11, em que a operação de recorte é realizada para a saída do filtro passa- alta de variação de intensidade. Cláusula 17: Um codificador (20) que compreende circuitos de processamento para realizar o método de acordo com qualquer uma das Cláusulas 1 a 16. Cláusula 18: Um decodificador (30) que compreende circuitos de processamento para realizar o método de acordo com qualquer uma das Cláusulas 1 a 16.
Cláusula 19: Um produto de programa de computador que compreende um código de programa para realizar o método de acordo com qualquer uma das Cláusulas 1 a 16. Cláusula 20: Um decodificador, compreendendo: um ou mais processadores; e um meio de armazenamento legível por computador não transitório acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método de acordo com qualquer uma das Cláusulas 1 a 16. Cláusula 21: Um codificador, compreendendo: um ou mais processadores; e um meio de armazenamento legível por computador não transitório acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para realizar o método de acordo com qualquer uma das Cláusulas 1 a 16. Cláusula 22: Método para processo de intra ou inter predição de tecnologia de codificação de vídeo, o método compreende: obter uma amostra de referência (ou seja, pelo menos uma amostra de referência, em um exemplo, uma quantidade das amostras de referência pode ser quatro); obter uma posição de amostra fracionária; e filtrar, usando um filtro de interpolação de subpixel, a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de
0 = −? interpolação de subpixel são obtidos de acordo com
1 = 64 − # ≪ 1% + ? 2 = # ≪ 1% + ? 3 = −?
em que ? é um parâmetro de intensidade, é a posição de amostra fracionária, 0, 1, 2, 3 são os coeficientes de filtro.
Cláusula 23: O método da Cláusula 22, em que o método compreende ainda: obter um valor de um sinal SEL tomando o Nésimo bit menos significativo da posição de amostra fracionária , N é um número inteiro positivo; obter um valor intermediário de N, em que N é definido igual ao valor da posição de amostra fracionária quando o sinal SEL é zero; ou N está definido para − ( not (31 xor ) ) quando o sinal SEL não é zero; obter o parâmetro de intensidade S usando uma operação de adição e operações de deslocamento: S = ((N << 1) + N) >> 3 Cláusula 24: O método da Cláusula 23, em que N é igual a 5. Cláusula 25: O método de qualquer uma das Cláusulas 22 a 24, em que o filtro de interpolação de subpixel é um filtro de 4 derivações equivalente.
Cláusula 26: O método de qualquer uma das Cláusulas 22 a 25, em que o parâmetro de intensidade ? é calculado em paralelo com um coeficiente de filtro linear P, em que o coeficiente de filtro linear P é usado para obter o coeficiente de filtro 1 do filtro de interpolação de subpixel e em que P = 64 − # ≪ 1%.
Cláusula 27: O método de qualquer uma das Cláusulas 22 a 25, em que um bit (por exemplo, um bit mais baixo ou um bit inferior) da posição de amostra fracionária p é definido como zero. Cláusula 28: O método de qualquer uma das cláusulas 22 a 26, em que a posição de amostra fracionária p é incrementada em 1 e, posteriormente, o bit inferior do valor incrementado é definido como zero antes que este valor seja usado para derivar coeficientes de filtro. Cláusula 29: Um método de codificação de vídeo, o método compreende processamento de intra predição de um bloco, compreendendo filtragem de interpolação de subpixel aplicada a amostras de referência; em que o filtro de interpolação de subpixel é uma combinação de filtros, pelo menos um dos filtros é determinado de acordo com a posição de amostra fracionária.
[000255] Cláusula 29: O método da Cláusula 28, em que o filtro de interpolação é um filtro de suavização que é uma combinação paralela de dois filtros lineares dependentes de fase e um filtro passa-baixa. Cláusula 30: O método da Cláusula 29, em que o filtro de interpolação é um filtro de nitidez que é uma combinação paralela de um filtro linear dependente de fase e filtro passa-alta de variação de intensidade Cláusula 31: O método da Cláusula 30, em que o filtro passa-alta de variação de intensidade é um filtro FIR passa- alta independente de fase, a saída do qual é multiplicada por um parâmetro de intensidade dependente de fase. Cláusula 32: Um codificador (20) que compreende circuitos de processamento para realizar o método de acordo com qualquer uma das Cláusulas 22 a 31.
Cláusula 33: Um decodificador (30) que compreende circuitos de processamento para realizar o método de acordo com qualquer uma das Cláusulas 22 a 31. Cláusula 34: Um produto de programa de computador que compreende um código de programa para realizar o método de acordo com qualquer uma das Cláusulas 22 a 31. Cláusula 35: Um decodificador, compreendendo: um ou mais processadores; e um meio de armazenamento legível por computador não transitório acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método de acordo com qualquer uma das Cláusulas 22 a 31. Cláusulas 36: Um codificador, compreendendo: um ou mais processadores; e um meio de armazenamento legível por computador não transitório acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para realizar o método de acordo com qualquer uma das Cláusulas 22 a 31.
LISTA DE SINAIS DE REFERÊNCIA FIG. 1A 10 sistema de codificação de vídeo 12 dispositivo de origem 13 canal de comunicação 14 dispositivo de destino 16 fonte de imagem
17 dados de imagem 18 pré-processador 19 dados de imagem pré-processados 20 codificador de vídeo 21 dados de imagem codificados 22 interface de comunicação 28 interface de comunicação 30 decodificador de vídeo 31 dados de imagem decodificados 32 pós-processador 33 dados de imagem pós-processados 34 dispositivo de exibição FIG. 1B 40 sistema de codificação de vídeo 41 dispositivo(s) de imagem 42 antena 43 processador (es) 44 armazenamento(s) de memória 45 dispositivo de exibição 46 circuito de processamento 20 codificador de vídeo 30 decodificador de vídeo FIG. 2 17 imagem (dados) 19 imagem pré-processada (dados) 20 codificador 21 dados de imagem codificados 201 entrada (interface) 204 cálculo residual [unidade ou etapa] 206 unidade de processamento de transformação
208 unidade de quantização 210 unidade de quantização inversa 212 unidade de processamento de transformação inversa 214 unidade de reconstrução 220 unidade de filtro de circuito 230 buffer de imagem decodificada (DPB) 260 unidade de seleção de modo 270 unidade de codificação por entropia 272 saída (interface) 244 unidade de inter predição 254 unidade de intra predição 262 unidade de particionamento 203 bloco de imagem 205 bloco residual 213 bloco residual reconstruído 215 bloco reconstruído 221 bloco filtrado 231 imagem decodificada 265 bloco de predição 266 elementos de sintaxe 207 coeficientes de transformação 209 coeficientes quantizados 211 coeficientes desquantizados FIG. 3 21 dados de imagem codificados 30 decodificador de vídeo 304 unidade de decodificação por entropia 309 coeficientes quantizados 310 unidade de quantização inversa 311 coeficientes desquantizados
312 unidade de processamento de transformação inversa 313 bloco residual reconstruído 314 unidade de reconstrução 315 bloco reconstruído 320 filtro de circuito 321 bloco filtrado 330 buffer de imagem decodificada DBP 331 imagem decodificada 360 unidade de aplicação de modo 365 bloco de predição 366 elementos de sintaxe 344 unidade de inter predição 354 unidade de intra predição FIG. 4 400 dispositivo de codificação de vídeo 410 portas de ingresso/portas de entrada 420 unidades receptoras Rx 430 processador 440 unidades transmissoras Tx 450 portas de egresso/portas de saída 460 memória 470 módulo de codificação FIG. 5 500 dispositivo de origem ou dispositivo de destino 502 processador 504 memória 506 código e dados 508 sistema operacional 510 programas de aplicação 512 barramento
518 tela FIG. 23 2300 fluxograma de método de processamento de intra/inter predição FIG. 24 2400 fluxograma de método de codificação de vídeo FIG. 25 2500 módulo de intra/inter processamento 2510 unidade de obtenção de amostra de referência 2520 unidade de obtenção de valor de deslocamento de subpixel 2530 filtro de interpolação de subpixel FIG. 26 2600 módulo de codificação de vídeo 2610 unidade de processamento de intra predição 2620 filtro de interpolação de subpixel

Claims (22)

REIVINDICAÇÕES EMENDADAS
1. Método (2300) para um de processamento de intra predição e inter predição de um quadro de vídeo, caracterizado pelo fato de que compreende as etapas de: obter (2301) uma amostra de referência; obter (2302) um valor de um deslocamento de subpixel; e filtrar (2303), usando um filtro de interpolação de 4 derivações de subpixel, a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel satisfazem: = 16 − 2 = 16 + 16 − 2 = 16 + 2 =2 em que p é uma parte fracionária do valor de deslocamento de subpixel, e , , , e são os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel.
2. Método (2300), de acordo com a reivindicação 1, caracterizado pelo fato de que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos em uma tabela da seguinte forma: p 0 16 32 16 0 1 16 32 16 0 2 15 31 17 1 3 15 31 17 1 4 14 30 18 2 5 14 30 18 2
3. Método (2300) para um de processamento de intra predição ou inter predição de um quadro de vídeo, caracterizado pelo fato de que compreende as etapas de:
obter (2301) uma amostra de referência; obter (2302) um valor de um deslocamento de subpixel; e filtrar (2303), usando um filtro de interpolação de 4 derivações de subpixel, a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos como segue: p 0 16 32 16 0 1 16 32 16 0 2 15 31 17 1 3 15 31 17 1 4 14 30 18 2 5 14 30 18 2 6 13 29 19 3 7 13 29 19 3 8 12 28 20 4 9 12 28 20 4 10 11 27 21 5 11 11 27 21 5 12 10 26 22 6 13 10 26 22 6 14 9 25 23 7 15 9 25 23 7 16 8 24 24 8 17 8 24 24 8 18 7 23 25 9 19 7 23 25 9 em que p é uma parte fracionária do valor do deslocamento de subpixel, e , , , e são os coeficientes de filtro.
4. Método (2300), de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que um bit de p é definido como zero.
5. Método (2300) de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que p é incrementado em 1 e, posteriormente, um bit inferior do p incrementado é zerado antes de o referido p ser usado para obter os coeficientes de filtro.
6. Método (2300), de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que obtenção dos coeficientes de filtro compreende a etapa de cálculo dos coeficientes de filtro de acordo com: = 16 − 2 = 16 + = + = − .
7. Método (2400) de codificação de vídeo, o método compreende processamento de intra predição de um bloco de um quadro de vídeo, caracterizado pelo fato de que compreende: filtrar (2401), usando um filtro de interpolação de 4 derivações de subpixel, uma amostra de referência do quadro de vídeo; em que o filtro de interpolação de 4 derivações de subpixel é uma combinação de filtros, com coeficientes de filtro de pelo menos um dos filtros satisfazendo: = 16 − 2 = 16 + 16 − 2 = 16 + 2 =2 em que p é uma posição de amostra fracionária de um deslocamento de subpixel, e , , , e são os coeficientes de filtro.
8. Método (2400), de acordo com a reivindicação 7, caracterizado pelo fato de que o filtro de interpolação de 4 derivações de subpixel é um filtro de suavização que é uma combinação paralela de dois filtros lineares dependentes de fase e um filtro passa-baixa.
9. Método (2400), de acordo com a reivindicação 7, caracterizado pelo fato de que o filtro de interpolação de 4 derivações de subpixel é um filtro de nitidez que é uma combinação paralela de um filtro linear dependente de fase e filtro passa-alta de variação de intensidade.
10. Método (2400), de acordo com a reivindicação 9, caracterizado pelo fato de que o filtro passa-alta de variação de intensidade é um filtro de resposta de impulso finita de passa-alta independente de fase, FIR, a saída do qual é multiplicada por um parâmetro de intensidade dependente de fase.
11. Método (2400) de acordo com qualquer uma das reivindicações 7 a 10, caracterizado pelo fato de que um bit inferior de p é definido como zero.
12. Método (2400) de acordo com qualquer uma das reivindicações 7 a 10, caracterizado pelo fato de que p é incrementado em 1 e, em seguida, o bit inferior do valor incrementado é definido como zero antes que esse valor seja usado para derivar coeficientes de filtro de interpolação.
13. Método (2400), de acordo com as reivindicações 9 ou 10, caracterizado pelo fato de que a operação de recorte é realizada para a saída do filtro passa-alta de variação de intensidade.
14. Aparelho para processamento de intra predição e inter predição de um quadro de vídeo, caracterizado pelo fato de que compreende: uma unidade de obtenção de amostra de referência (2510) configurada para obter uma amostra de referência; uma unidade de obtenção de valor de deslocamento de subpixel (2520) configurada para obter um valor de deslocamento de subpixel; e um filtro de interpolação de 4 derivações de subpixel (2530) configurado para filtrar a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel satisfazem:
= 16 − 2 = 16 + 16 − 2 = 16 + 2 = 2 em que p é uma parte fracionária do valor do deslocamento de subpixel, e , , , e são os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel.
15. Aparelho, de acordo com a reivindicação 14, caracterizado pelo fato de que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos em uma tabela da seguinte forma: p 0 16 32 16 0 1 16 32 16 0 2 15 31 17 1 3 15 31 17 1 4 14 30 18 2 5 14 30 18 2 6 13 29 19 3 7 13 29 19 3 8 12 28 20 4 9 12 28 20 4 10 11 27 21 5 11 11 27 21 5 12 10 26 22 6 13 10 26 22 6 14 9 25 23 7 15 9 25 23 7 16 8 24 24 8
16. Aparelho para processamento de intra predição e inter predição de um quadro de vídeo, caracterizado pelo fato de que compreende: uma unidade de obtenção de amostra de referência (2510) configurada para obter uma amostra de referência; uma unidade de obtenção de valor de deslocamento de subpixel (2520) configurada para obter um valor de deslocamento de subpixel; e um filtro de interpolação de 4 derivações de subpixel (2530) configurado para filtrar a amostra de referência para obter um valor de amostra predito, em que os coeficientes de filtro do filtro de interpolação de 4 derivações de subpixel são definidos como segue:
p 0 16 32 16 0 1 16 32 16 0 2 15 31 17 1 3 15 31 17 1 4 14 30 18 2 5 14 30 18 2 6 13 29 19 3 7 13 29 19 3 8 12 28 20 4 9 12 28 20 4 10 11 27 21 5 11 11 27 21 5 12 10 26 22 6 13 10 26 22 6 14 9 25 23 7 15 9 25 23 7 16 8 24 24 8 17 8 24 24 8 18 7 23 25 9 19 7 23 25 9 20 6 22 26 10 21 6 22 26 10 22 5 21 27 11 23 5 21 27 11 24 4 20 28 12 25 4 20 28 12 26 3 19 29 13 27 3 19 29 13 em que p é uma parte fracionária do valor do deslocamento de subpixel, e , , , e são os coeficientes de filtro.
17. Aparelho para codificação de vídeo, caracterizado pelo fato de que compreende: uma unidade de processamento de intra predição (2610) configurada para realizar a intra predição de um bloco de um quadro de vídeo; e um filtro de interpolação de 4 derivações de subpixel (2620) configurado para filtrar uma amostra de referência do quadro de vídeo; em que o filtro de interpolação de 4 derivações de subpixel é uma combinação de filtros, com coeficientes de filtro de pelo menos um dos filtros satisfazendo: = 16 − 2 = 16 + 16 − 2 = 16 + 2 = 2 em que p é uma posição de amostra fracionária de um deslocamento de subpixel, e , , , e são os coeficientes de filtro.
18. Codificador (20), caracterizado pelo fato de que compreende circuitos de processamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 13.
19. Decodificador (30), caracterizado pelo fato de que compreende circuitos de processamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 13.
20. Produto de programa de computador, caracterizado pelo fato de que compreende um código de programa para realizar o método conforme definido em qualquer uma das reivindicações 1 a 13.
21. Decodificador, caracterizado pelo fato de que compreende: pelo menos um processador; e um meio de armazenamento legível por computador não transitório acoplado ao pelo menos um processador e armazenando programação para execução pelo menos um processador, em que a programação, quando executada pelo menos um processador, configura o decodificador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 13.
22. Codificador, caracterizado pelo fato de que compreende: pelo menos um processador; e um meio de armazenamento legível por computador não transitório acoplado ao pelo menos um processador e armazenando programação para execução pelo menos um processador, em que a programação, quando executada pelo menos um processador, configura o codificador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 13.
BR112021000657-5A 2018-12-21 2019-12-20 Método e aparelho de filtragem de interpolação para codificação preditiva, codificador, decodificador e produto de programa de computador BR112021000657A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862784319P 2018-12-21 2018-12-21
US62/784,319 2018-12-21
PCT/RU2019/050251 WO2020130887A1 (en) 2018-12-21 2019-12-20 Method and apparatus of interpolation filtering for predictive coding

Publications (1)

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

Family

ID=71102388

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021000657-5A BR112021000657A2 (pt) 2018-12-21 2019-12-20 Método e aparelho de filtragem de interpolação para codificação preditiva, codificador, decodificador e produto de programa de computador

Country Status (12)

Country Link
US (2) US11877013B2 (pt)
EP (2) EP3891980B1 (pt)
JP (2) JP7293361B2 (pt)
KR (1) KR20210100183A (pt)
CN (2) CN113170119A (pt)
AU (2) AU2019401811B2 (pt)
BR (1) BR112021000657A2 (pt)
CA (1) CA3124104A1 (pt)
IL (1) IL284189A (pt)
MX (1) MX2021007537A (pt)
SG (1) SG11202106487VA (pt)
WO (1) WO2020130887A1 (pt)

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8811484B2 (en) * 2008-07-07 2014-08-19 Qualcomm Incorporated Video encoding by filter selection
US10045046B2 (en) * 2010-12-10 2018-08-07 Qualcomm Incorporated Adaptive support for interpolating values of sub-pixels for video coding
KR101956284B1 (ko) * 2011-06-30 2019-03-08 엘지전자 주식회사 보간 방법 및 이를 이용한 예측 방법
KR102134367B1 (ko) 2012-09-10 2020-07-15 선 페이턴트 트러스트 화상 부호화 방법, 화상 복호화 방법, 화상 부호화 장치, 화상 복호화 장치, 및 화상 부호화 복호화 장치
KR102379609B1 (ko) * 2012-10-01 2022-03-28 지이 비디오 컴프레션, 엘엘씨 향상 레이어 모션 파라미터들에 대한 베이스-레이어 힌트들을 이용한 스케일러블 비디오 코딩
US10334259B2 (en) * 2012-12-07 2019-06-25 Qualcomm Incorporated Advanced residual prediction in scalable and multi-view video coding
US9451254B2 (en) * 2013-07-19 2016-09-20 Qualcomm Incorporated Disabling intra prediction filtering
US10462480B2 (en) * 2014-12-31 2019-10-29 Microsoft Technology Licensing, Llc Computationally efficient motion estimation
EP4221202A1 (en) * 2015-06-05 2023-08-02 Dolby Laboratories Licensing Corporation Image encoding and decoding method and image decoding device
MY201173A (en) 2015-11-17 2024-02-08 Huawei Tech Co Ltd Method and apparatus of adaptive filtering of samples for video coding
US10194170B2 (en) * 2015-11-20 2019-01-29 Mediatek Inc. Method and apparatus for video coding using filter coefficients determined based on pixel projection phase
US10390015B2 (en) * 2016-08-26 2019-08-20 Qualcomm Incorporated Unification of parameters derivation procedures for local illumination compensation and cross-component linear model prediction
US10341659B2 (en) * 2016-10-05 2019-07-02 Qualcomm Incorporated Systems and methods of switching interpolation filters
US10904565B2 (en) * 2017-06-23 2021-01-26 Qualcomm Incorporated Memory-bandwidth-efficient design for bi-directional optical flow (BIO)
WO2019160860A1 (en) * 2018-02-14 2019-08-22 Futurewei Technologies, Inc. Adaptive interpolation filter
JP7250917B2 (ja) * 2018-10-06 2023-04-03 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 補間フィルタを使用するイントラ予測のための方法および装置

Also Published As

Publication number Publication date
JP7293361B2 (ja) 2023-06-19
IL284189A (en) 2021-08-31
AU2019401811B2 (en) 2023-11-23
EP3891980B1 (en) 2024-05-08
US20240146974A1 (en) 2024-05-02
US11877013B2 (en) 2024-01-16
NZ777503A (en) 2023-10-27
AU2019401811A1 (en) 2021-07-15
MX2021007537A (es) 2021-09-28
CN113556566A (zh) 2021-10-26
US20210337238A1 (en) 2021-10-28
JP2023118725A (ja) 2023-08-25
CN113170119A (zh) 2021-07-23
SG11202106487VA (en) 2021-07-29
CA3124104A1 (en) 2020-06-25
KR20210100183A (ko) 2021-08-13
EP3891980A1 (en) 2021-10-13
WO2020130887A1 (en) 2020-06-25
AU2024200360A1 (en) 2024-02-08
CN113556566B (zh) 2022-06-10
EP4358513A2 (en) 2024-04-24
JP2022514922A (ja) 2022-02-16
EP3891980A4 (en) 2022-06-22

Similar Documents

Publication Publication Date Title
WO2020135346A1 (en) An encoder, a decoder and corresponding methods using an adaptive loop filter
ES2965083T3 (es) Terminación temprana para el refinamiento de flujo óptico
BR112021007592A2 (pt) método e aparelho para determinar informações de movimento para um bloco atual, método e aparelho para construir e atualizar uma lista de preditores de vetor de movimento baseada em histórico, e meio de armazenamento legível por computador não transitório, e métodos e aparelho de codificação/decodificação de vídeo
BR112021016677A2 (pt) Método e aparelho para predição inter baseada em afim de sub-blocos de croma
AU2019401170B2 (en) Method and apparatus of mode- and size-dependent block-level restrictions
BR112021009911A2 (pt) codificador, decodificador e métodos correspondentes usando armazenamento de mv compacto
BR112021010286A2 (pt) codificador, decodificador e métodos correspondentes de construção de lista de modos mais prováveis para blocos com predição de múltiplas hipóteses
BR112021013644A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de deblocagem
AU2020206492B2 (en) Encoder, decoder, non-transitionary computer-readable medium and method of video coding a block of a picture
CA3144797A1 (en) Method for computing position of integer grid reference sample for block level boundary sample gradient computation in bi-predictive optical flow computation and bi-predictive correction
JP2024014927A (ja) インター予測方法および装置
BR112021007509A2 (pt) lista de mesclagem separada para candidatos de mesclagem de sub-bloco e harmonização de técnicas intra-inter para codificação de vídeo
WO2019204672A1 (en) Interpolation filter for an intra prediction apparatus and method for video coding
EP4128755A2 (en) Method and apparatus of subsample interpolation filtering
BR112021009833A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
BR112021003946A2 (pt) codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021000657A2 (pt) Método e aparelho de filtragem de interpolação para codificação preditiva, codificador, decodificador e produto de programa de computador
WO2020139169A1 (en) Method and apparatus of sharpening interpolation filtering for predictive coding
WO2020114291A1 (en) Video encoder, video decoder, and corresponding method
EP4022901A1 (en) Method and apparatus of still picture and video coding with shape-adaptive resampling of residual blocks
EP4022908A1 (en) Method and apparatus of simplified geometric merge mode for inter prediction