BR112020026959A2 - Aparelho e método para filtragem em codificação de vídeo - Google Patents

Aparelho e método para filtragem em codificação de vídeo Download PDF

Info

Publication number
BR112020026959A2
BR112020026959A2 BR112020026959-0A BR112020026959A BR112020026959A2 BR 112020026959 A2 BR112020026959 A2 BR 112020026959A2 BR 112020026959 A BR112020026959 A BR 112020026959A BR 112020026959 A2 BR112020026959 A2 BR 112020026959A2
Authority
BR
Brazil
Prior art keywords
block
lut
filtered
prediction
filter
Prior art date
Application number
BR112020026959-0A
Other languages
English (en)
Inventor
Sergey Yurievich IKONIN
Victor Alexeevich Stepin
Dmitry Kuryshev
Jianle Chen
Roman Igorevich CHERNYAK
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 BR112020026959A2 publication Critical patent/BR112020026959A2/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
    • 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/117Filters, e.g. for pre-processing or post-processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods 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 set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation

Landscapes

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

Abstract

“aparelho e método para filtragem em codificação de vídeo''. a invenção refere-se a um filtro para codificação de vídeo, em que o filtro é configurado para processar um quadro reconstruído para geração de um quadro reconstruído filtrado, e em que o quadro reconstruído compreende uma pluralidade de pixels. o filtro inclui um ou mais processadores configurados para: obter um parâmetro de quantização (qp) do bloco reconstruído; obter um limiar (thr) com base no qp; e obter uma tabela de consulta com base em qp, de modo a gerar um bloco reconstruído filtrado com base no limiar e na tabela de consulta. o filtro é fornecido permitindo aperfeiçoar a eficiência para codificação de vídeo.

Description

“APARELHO E MÉTODO PARA FILTRAGEM EM CODIFICAÇÃO DE VÍDEO” CAMPO DA TÉCNICA
[0001] De modo geral, a presente invenção refere-se ao campo de codificação de vídeo. Mais especificamente, a presente invenção se refere a um filtro para codificação de vídeo, método para filtrar quadros de vídeo reconstruído, e método para filtrar blocos de vídeo bem como um aparelho de codificação e um aparelho de decodificação que compreendem tal filtro para codificação de vídeo.
ANTECEDENTES
[0002] Vídeo digital tem sido amplamente usado desde a introdução de discos DVD. Antes da transmissão, o vídeo é codificado e transmitido com o uso de uma mídia de transmissão. O visualizador recebe o vídeo e usa um dispositivo de visualização para decodificar e exibir o vídeo. Ao longo dos anos, a qualidade de vídeo tem aperfeiçoado, por exemplo, devido a resoluções mais altas, profundidades de cor e taxas de quadro. Isso levou a fluxos de dados maiores que são, agora, comumente transportados pela internet e redes de comunicação móveis.
[0003] Os vídeos de resolução mais alta, entretanto, tipicamente exigem mais largura de banda, visto que têm mais informações. A fim de reduzir exigências de largura de banda, padrões de codificação de vídeo que envolvem compressão do vídeo têm sido introduzidos. Quando o vídeo é codificado, as exigências de largura de banda (ou exigências de memória correspondentes em caso de armazenamento) são reduzidas. Frequentemente, essa redução ocorre ao custo de qualidade. Desse modo, os padrões de codificação de vídeo tentam encontrar um equilíbrio entre exigências de largura de banda e qualidade.
[0004] Visto que há uma necessidade constante para aperfeiçoar a qualidade e reduzir as exigências de largura de banda, soluções que mantêm a qualidade com exigências de largura de banda reduzidas ou aperfeiçoam a qualidade enquanto mantêm a exigência de largura de banda são continuamente demandadas. Além disso, por vezes compromissos podem ser aceitáveis. Por exemplo, pode ser aceitável aumentar as exigências de largura de banda se o aperfeiçoamento de qualidade for significativo.
[0005] A Codificação de Vídeo de Alta Eficiência (HEVC) é um exemplo de um padrão de codificação de vídeo que é comumente conhecido pelas pessoas versadas na técnica. Em HEVC, dividir uma unidade de codificação (CU) em unidades de predição (PU) ou unidades de transformada (TUs). O padrão para a próxima geração Codificação de Vídeo Versátil (VVC) é o projeto de vídeo conjunto mais recente das organizações de padronização do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e do Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG), trabalhando em conjunto em uma parceria conhecida como a Equipe de Exploração de Vídeo Conjunta (JVET). VVC também é denominado padrão ITU-T H.266/Codificação de Vídeo para a Próxima Geração (NGVC). Em VVC, são removidos os conceitos de múltiplos tipos de partição, isto é, é removida a separação dos conceitos de CU, PU e TU exceto quando necessário para CUs que têm um tamanho muito grande para o comprimento máximo de transformada, e suporta mais flexibilidade para formatos de partição de CU.
[0006] A filtragem de imagem é frequentemente usada para enfatizar determinados recursos de uma imagem ou aprimorar o objetivo ou qualidade perceptual da imagem filtrada. A filtragem de imagem tem que lidar com várias fontes de ruído. Assim, várias abordagens para aprimoramento de qualidade têm sido propostas e estão atualmente em uso. Por exemplo, em um método de filtro loop Adaptativo (ALF), cada quadro reconstruído é dividido em um conjunto de pequenos blocos (super-pixels) e cada bloco é filtrado pelo filtro loop adaptativo em que cada pixel do quadro reconstruído filtrado é uma soma ponderada de diversos pixels na área conectada do pixel a partir do quadro reconstruído ao redor da posição do pixel filtrado gerado. Os coeficientes de ponderação (também denominados coeficientes de filtro) têm propriedade de simetria central e são transmitidos do codificador para o lado de decodificador. Bordas normalmente têm um tamanho grande e, portanto, o número de coeficientes de ponderação transmitidos pode se tornar muito grande para um processamento eficiente. Um número grande de coeficientes de ponderação exige uma otimização de distorção de taxa (RDO) complexa no lado de codificador para diminuir o número de coeficientes de ponderação para transmissão. No lado de decodificador, ALF exige implantação de multiplicadores universais e esses multiplicadores devem ser recarregados para cada bloco de pixel 2x2.
[0007] Desse modo, há uma necessidade de um filtro aperfeiçoado e método que permite aperfeiçoar a qualidade de predição com baixa complexidade e, desse modo, aumentar a eficiência de codificação de vídeo.
SUMÁRIO
[0008] É um objetivo da invenção fornecer um filtro aperfeiçoado e método que permite aperfeiçoar a eficiência de filtragem com complexidade limitada e, desse modo, aumentar a eficiência de codificação de vídeo.
[0009] O objetivo anterior bem como outros objetivos são alcançados pela matéria das reivindicações independentes. As formas de implantação adicionais são evidentes a partir das reivindicações dependentes, da descrição e das figuras.
[0010] De acordo com um primeiro aspecto, a invenção se refere a um filtro para codificação de vídeo, em que o filtro é configurado para processar um bloco para geração de um bloco filtrado, em que o bloco compreende uma pluralidade de pixels. O filtro inclui um armazenamento de memória que compreende instruções; e um ou mais processadores em comunicação com a memória. O um ou mais processadores executam as instruções para: carregar um pixel atual e seus pixels vizinhos em um buffer linear de acordo com um modelo de varredura predefinido; obter componentes de espectro realizando-se transformada 1D para pixels no buffer linear; obter componentes de espectro filtrados multiplicando-se cada componente de espectro com um coeficiente de ganho, em que o coeficiente de ganho depende de um componente de espectro correspondente e um parâmetro de filtragem; obter pixels filtrados realizando-se transformada 1D inversa para componentes de espectro filtrados; e gerar o bloco filtrado com base nos pixels filtrados.
[0011] Conforme um exemplo, o bloco (ou quadro) pode ser um bloco predito, e o bloco filtrado é um bloco predito filtrado. Conforme outro exemplo, o bloco (ou quadro) pode ser um bloco reconstruído, e o bloco filtrado é um bloco reconstruído filtrado.
[0012] Conforme um exemplo, o coeficiente de ganho é uma função do componente de espectro correspondente e do parâmetro de filtragem. O parâmetro de filtragem pode ser derivado de um parâmetro de quantização (QP) de codec.
[0013] Um outro exemplo, um primeiro componente de espectro é desviado sem filtragem quando o coeficiente de ganho 𝐺(𝑖, 𝜎) para o primeiro componente de espectro é igual a um. O primeiro componente de espectro corresponde à soma ou valor médio de amostras no buffer linear, e o primeiro componente de espectro pode corresponder a DC.
[0014] Conforme outro exemplo, em que o um ou mais processadores executam as instruções para: descartar N bits de valores de tabela da LUT, N é um número inteiro. N pode ser dependente de valor de QP, ou é um valor fixo.
[0015] Conforme um exemplo, o modelo de varredura predefinido é definido como conjunto de deslocamentos espaciais ou raster em relação a uma posição do pixel atual dentro do bloco reconstruído. Deslocamentos que apontam para pixels vizinhos estão dentro do bloco reconstruído. Pelo menos um pixel filtrado pode ser colocado em sua posição original de acordo com o modelo de varredura predefinido. Quando todos os pixels filtrados são adicionados a um buffer de acúmulo de acordo com o modelo de varredura predefinido, e o buffer de acúmulo pode ser inicializado por zero antes de obter componentes de espectro filtrados. Quando pixels filtrados finais são obtidos como valores acumulados no buffer de acúmulo divididos pelo número de pixels adicionado a uma posição atual do buffer de acúmulo; um ou mais processadores são configurados para gerar o bloco reconstruído filtrado com base nos pixels filtrados finais.
[0016] De modo opcional, diferenças entre todos os pixels filtrados e não filtrados correspondentes são adicionadas a um buffer de acúmulo de acordo com o modelo de varredura predefinido, e o buffer de acúmulo pode inicializar por pixels não filtrados multiplicados pelo número máximo de valores de pixel a ser adicionado no bloco. Os pixels filtrados finais são obtidos como valores acumulados no buffer de acúmulo divididos pelo número máximo de valores de pixel a ser adicionado no bloco.
[0017] De acordo com um segundo aspecto, a invenção se refere a um método de filtragem correspondente para processar um bloco para geração de um bloco filtrado, em que o bloco compreende uma pluralidade de pixels. Cada pixel é associado a um valor de pixel. O método de filtragem compreende as etapas de: carregar um pixel atual e seus pixels vizinhos em um buffer linear de acordo com um modelo de varredura predefinido; obter componentes de espectro realizando-se transformada 1D para pixels no buffer linear; obter componentes de espectro filtrados multiplicando-se cada componente de espectro com um coeficiente de ganho, em que o coeficiente de ganho depende de um componente de espectro correspondente e um parâmetro de filtragem; obter pixels filtrados realizando-se transformada 1D inversa para componentes de espectro filtrados; e gerar o bloco filtrado com base nos pixels filtrados.
[0018] Conforme um exemplo, o bloco (ou quadro) pode ser um bloco predito, e o bloco filtrado é um bloco predito filtrado. Conforme outro exemplo, o bloco (ou quadro) pode ser um bloco reconstruído, e o bloco filtrado é um bloco reconstruído filtrado.
[0019] Conforme um exemplo, o coeficiente de ganho é uma função do componente de espectro correspondente e do parâmetro de filtragem. O parâmetro de filtragem pode ser derivado de um parâmetro de quantização (QP) de codec.
[0020] Um outro exemplo, um primeiro componente de espectro é desviado sem filtragem quando o coeficiente de ganho 𝐺(𝑖, 𝜎) para o primeiro componente de espectro é igual a um. O primeiro componente de espectro pode corresponder ao valor de DC.
[0021] Conforme outro exemplo, filtrar os componentes de espectro com base em uma tabela de consulta (LUT). A geração de LUT pode se basear em uma função auxiliar para pelo menos alguns parâmetros de quantização (QPs). A função auxiliar pode ser uma equação de linha reta proveniente de pontos (i,THR) e (a, 0), em que a > 0 e a depende de parâmetro de filtragem σ ou valor de QP. Por exemplo, para o último QP em um conjunto de QPs, a equivale a 11; ou para o penúltimo QP no conjunto de QPs, a equivale a 9.
[0022] Conforme outro exemplo, o método inclui, ainda: descartar N bits de valores de tabela da LUT, N é um número inteiro. N pode ser dependente de valor de QP, ou é um valor fixo. Quando N é selecionado menor para QP menor em comparação ao QP maior do conjunto de QPs, por exemplo, para o primeiro QP no conjunto de QPs, N é igual a 2; ou para os QPs remanescentes do conjunto de QPs, N é igual a 3. De modo alternativo, quando N é selecionado maior para QP maior em comparação a QP menor do conjunto de QPs de QPs, por exemplo, para o último QP ou para os últimos dois QPs no conjunto de QPs, N é igual a 4; ou para os QPs remanescentes do conjunto de QPs, N é igual a 3. De modo alternativo, quando N é selecionado menor para QP menor e maior para QP maior em comparação ao QP remanescente do conjunto de QPs, por exemplo, para o primeiro QP no conjunto de QPs, N é igual a 2; para o último QP ou para os últimos dois QPs no conjunto de QPs, N é igual a 4; ou, para os QPs remanescentes do conjunto de QPs, N é igual a 3.
[0023] Conforme um exemplo, o modelo de varredura predefinido é definido como conjunto de deslocamentos espaciais ou raster em relação a uma posição do pixel atual dentro do bloco reconstruído. Deslocamentos que apontam para pixels vizinhos estão dentro do bloco reconstruído. Pelo menos um pixel filtrado pode ser colocado em sua posição original de acordo com o modelo de varredura predefinido. Quando todos os pixels filtrados são adicionados a um buffer de acúmulo de acordo com o modelo de varredura predefinido, e o buffer de acúmulo pode ser inicializado por zero antes de obter componentes de espectro filtrados. Quando pixels filtrados finais são obtidos como valores acumulados no buffer de acúmulo divididos pelo número de pixels adicionado a uma posição atual do buffer de acúmulo; um ou mais processadores são configurados para gerar o bloco reconstruído filtrado com base nos pixels filtrados finais.
[0024] De modo opcional, diferenças entre todos os pixels filtrados e não filtrados correspondentes são adicionadas a um buffer de acúmulo de acordo com o modelo de varredura predefinido, e o buffer de acúmulo pode inicializar por pixels não filtrados multiplicados pelo número máximo de valores de pixel a ser adicionado no bloco. Os pixels filtrados finais são obtidos como valores acumulados no buffer de acúmulo divididos pelo número máximo de valores de pixel a ser adicionado no bloco.
[0025] De acordo com um terceiro aspecto, a invenção se refere a um aparelho de codificação para codificar um quadro atual a partir de um fluxo de vídeo de entrada, em que o aparelho de codificação compreende um filtro de acordo com o primeiro aspecto da invenção.
[0026] De acordo com um quarto aspecto, a invenção se refere a um aparelho de decodificação para decodificar um quadro atual a partir de um fluxo de bits recebido, em que o aparelho de decodificação compreende um filtro de acordo com o primeiro aspecto da invenção.
[0027] De acordo com um quinto aspecto, a invenção se refere a um programa de computador que compreende código de programa para realizar o método de acordo com o segundo aspecto quando executado em um computador.
[0028] Desse modo, o filtro é fornecido que permite aperfeiçoar a eficiência para codificação de vídeo. Mais especificamente, o filtro aperfeiçoado, de acordo com as modalidades da invenção, estima parâmetros de filtro a partir do quadro em si sem sinalização de parâmetros de filtro e, portanto, exige significativamente menos sinalização do que filtros convencionais, que sinalizam coeficientes de ponderação para filtragem no domínio de imagem.
BREVE DESCRIÇÃO DOS DESENHOS
[0029] As modalidades adicionais da invenção serão descritas em relação às figuras a seguir, em que:
[0030] A Figura 1A mostra um diagrama esquemático que ilustra um aparelho de codificação de acordo com uma modalidade que compreende um filtro de acordo com uma modalidade;
[0031] A Figura 1B mostra um diagrama esquemático que ilustra um aparelho de codificação de acordo com uma modalidade que compreende um filtro de acordo com uma modalidade;
[0032] A Figura 2A mostra um diagrama esquemático que ilustra um aparelho de decodificação de acordo com uma modalidade que compreende um filtro de acordo com uma modalidade;
[0033] A Figura 2B mostra um diagrama esquemático que ilustra um aparelho de decodificação de acordo com uma modalidade que compreende um filtro de acordo com uma modalidade;
[0034] A Figura 3A mostra um diagrama esquemático que ilustra aspectos de um processo de filtragem implantado em um filtro de acordo com uma modalidade;
[0035] A Figura 3B mostra um diagrama esquemático que ilustra aspectos de um processo de filtragem implantado em um filtro de acordo com uma modalidade;
[0036] A Figura 3C mostra um diagrama esquemático que ilustra aspectos de um processo de filtragem implantado em um filtro de acordo com outra modalidade;
[0037] A Figura 4A ilustra modelos para diferentes posições de pixel dentro de bloco reconstruído quadrangular;
[0038] A Figura 4B ilustra formato de filtro equivalente para um pixel;
[0039] A Figura 4C fornece um exemplo de preenchimento;
[0040] A Figura 4D fornece outro exemplo de preenchimento;
[0041] A Figura 5A mostra um diagrama de fluxo que ilustra etapas de um método de filtragem de acordo com uma modalidade;
[0042] A Figura 5B mostra um diagrama de fluxo que ilustra etapas de um método de filtragem de acordo com uma modalidade;
[0043] A Figura 6 é um projeto de filtro de hardware exemplificativo com base em SRAM;
[0044] A Figura 7 é projeto de hardware exemplificativo de filtragem de grupo 2x2 com base em flip-flops;
[0045] A Figura 8 mostra um exemplo de combinação de resultados de filtragem de quatro grupos 2x2 com reutilização de resultados de mesmo filtro final de grupo espacial;
[0046] A Figura 9, conforme um exemplo, mostra o resultado de otimização da LUT;
[0047] A Figura 10, conforme um exemplo, mostra gap indesejável em função de transferência de filtro;
[0048] A Figura 11, conforme um exemplo, representa a mesma tabela com entradas de tabela sendo plotadas uma a uma;
[0049] A Figura 12, conforme um exemplo, ilustra o método como gap pode ser eliminado com o uso de função auxiliar;
[0050] A Figura 13 ilustra o exemplo de eliminação de gap obtendo máximo de dois valores enquanto gera a LUT;
[0051] A Figura 14, conforme um exemplo, ilustra função de transferência de filtro após aplicação do método descrito acima;
[0052] A Figura 15 ilustra exemplo de funções de transferência de filtro dependendo de cinco QPs no conjunto;
[0053] A Figura 16 ilustra exemplo de funções de transferência de filtro para cinco QPs no conjunto com base em tabelas correspondentes;
[0054] A Figura 17 ilustra exemplo de funções de transferência de filtro para cinco QPs no conjunto com base em tabelas correspondentes; e
[0055] A Figura 18 é um diagrama esquemático que ilustra uma estrutura exemplificativa de um aparelho de acordo com uma modalidade.
[0056] Nas várias figuras, referências numéricas idênticas serão usadas para recursos idênticos ou funcionalmente equivalentes.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0057] Na descrição a seguir, é feita referência aos desenhos anexos, que fazem parte da revelação, e nos quais são mostrados, a título de ilustração, aspectos específicos em que a presente invenção pode ser colocada. Entende- se que outros aspectos podem ser utilizados e mudanças estruturais ou lógicas podem ser realizadas sem se afastar do escopo da presente invenção. A descrição detalhada a seguir, portanto, não deve ser considerada em um sentido limitante, visto que o escopo da presente invenção é definido pelas reivindicações anexas.
[0058] Por exemplo, entende-se que uma revelação, em conexão com um método descrito, também pode ser verdadeira para um dispositivo ou sistema correspondente configurado para realizar o método e vice-versa. Por exemplo, se uma etapa de método específica for descrita, um dispositivo correspondente pode incluir uma unidade para realizar a etapa de método descrita, até mesmo se tal unidade não for descrita ou ilustrada explicitamente nas figuras. Adicionalmente, entende-se que os recursos dos vários aspectos exemplificativos, descritos no presente documento, podem ser combinados uns com os outros, a menos que estabelecido especificamente de outro modo.
[0059] A Figura 1A mostra um aparelho de codificação 100, de acordo com uma modalidade, que compreende um filtro 120, de acordo com uma modalidade. O aparelho de codificação 100 é configurado para codificar um bloco de um quadro de um sinal de vídeo que compreende uma pluralidade de quadros (também denominados fotos ou imagens no presente documento), em que cada quadro pode ser dividido em uma pluralidade de blocos e cada bloco compreende uma pluralidade de pixels. Em uma modalidade, os blocos podem ser macroblocos, unidades de árvore de codificação, unidades de codificação, unidades de predição e/ou blocos de predição.
[0060] O termo “bloco”, nesta revelação, é usado para qualquer tipo de bloco ou para qualquer profundidade de bloco, por exemplo, o termo “bloco” inclui, mas sem limitação, bloco raiz, bloco, sub-bloco, nó-folha e etc. Os blocos a serem codificados não têm, necessariamente, o mesmo tamanho. Uma imagem pode incluir blocos de diferentes tamanhos e os rasters de bloco de diferentes imagens de sequência de vídeo também podem diferir.
[0061] Na modalidade exemplificativa mostrada na Figura 1A, o aparelho de codificação 100 é implantado na forma de um codificador de codificação de vídeo híbrido. Normalmente, o primeiro quadro de um sinal de vídeo é um intra quadro, que é codificado com o uso apenas de predição intra. Para essa finalidade, a modalidade do aparelho de codificação 100 mostrado na Figura 1A compreende uma unidade de predição intra 154 para predição intra. Um intra quadro pode ser decodificado sem informações de outros quadros. A unidade de predição intra 154 pode realizar a predição intra de um bloco com base em informações fornecidas pela unidade de estimativa intra 152.
[0062] Os blocos de quadros subsequentes após o primeiro intra quadro podem ser codificados com o uso de predição intra ou inter, conforme selecionado por uma unidade de seleção de modo 160. Para essa finalidade, o aparelho de codificação 100 mostrado na Figura 1A compreende, ainda, uma unidade de predição inter 144. De modo geral, a unidade de predição inter 144 pode ser configurada para realizar compensação de movimento de um bloco com base em estimativa de movimento fornecida pela unidade de estimativa inter 142.
[0063] Além disso, o sinal de predição na modalidade de codificador híbrido mostrada na Figura 1B obtido de predição inter ou intra é filtrado de modo adicional pelo filtro 145.
[0064] Além disso, na modalidade de codificador híbrido mostrada nas Figuras 1A e 1B, uma unidade de cálculo residual 104 determina a diferença entre o bloco original e sua predição, isto é, o bloco residual definindo o erro de predição da predição intra/inter de imagem. Esse bloco residual é transformado pela unidade de transformação 106 (por exemplo, com o uso de uma DCT) e os coeficientes de transformação são quantizados pela unidade de quantização
108. A saída da unidade de quantização 108 bem como a codificação ou informações secundárias fornecidas, por exemplo, pela unidade de predição intra 154, pela unidade de predição inter 144 e pelo filtro 120 são codificadas de modo adicional por uma unidade de codificação de entropia 170.
[0065] Um codificador de vídeo híbrido normalmente duplica o processamento de decodificador de modo que ambos gerem as mesmas predições. Desse modo, na modalidade mostrada na Figura 1, a unidade de quantização inversa 110 e a unidade de transformação inversa realizam as operações inversas da unidade de transformação 106 e da unidade de quantização 108 e duplicam a aproximação decodificada do bloco residual. Os dados de bloco residual decodificados são, então, adicionados aos resultados da predição, isto é, ao bloco de predição, pela unidade de reconstrução 114. Então, a saída da unidade de reconstrução 114 pode ser fornecida a um buffer de linha 116 a ser usado para predição intra e é processada adicionalmente pelo filtro 120, que será descrito em mais detalhes abaixo. A imagem final é armazenada no buffer de imagem decodificada 130 e pode ser usada para a predição inter de quadros subsequentes.
[0066] A Figura 2A mostra um aparelho de decodificação 200 de acordo com uma modalidade que compreende um filtro 220 de acordo com uma modalidade. O aparelho de decodificação 200 é configurado para decodificar um bloco de um quadro de um sinal de vídeo codificado. Na modalidade mostrada na Figura 2A, o aparelho de decodificação 200 é implantado como um decodificador híbrido. Uma unidade de decodificação de entropia 204 realiza decodificação de entropia dos dados de imagem codificados que, de modo geral, podem compreender erros de predição (isto é, blocos residuais), dados de movimento e outras informações secundárias, que são necessárias, em particular, para uma unidade de predição intra 254 e uma unidade de predição inter 244 bem como outros componentes do aparelho de decodificação 200, tais como o filtro 220. De modo geral, a unidade de predição intra 254 e a unidade de predição inter 244 do aparelho de decodificação 200 mostrado na Figura 2A são selecionadas por uma unidade de seleção de modo 260 e funcionam do mesmo modo que a unidade de predição intra 154 e a unidade de predição inter 144 do aparelho de codificação 100 mostrado na Figura 1, de modo que predições idênticas possam ser geradas pelo aparelho de codificação 100 e pelo aparelho de decodificação 200. Uma unidade de reconstrução 214 do aparelho de decodificação 200 é configurada para reconstruir o bloco com base no bloco predito filtrado e no bloco residual fornecido pela unidade de quantização inversa 210 e pela unidade de transformação inversa 212. Conforme no caso do aparelho de codificação 100, o bloco reconstruído pode ser fornecido a um buffer de linha 216 usado para predição intra e o bloco/quadro filtrado pode ser fornecido a um buffer de imagem decodificada 230 pelo filtro 220 para predição inter.
[0067] Conforme mostrado na Figura 2B, o sinal de predição na modalidade de decodificador híbrido mostrada na Figura 2B obtido a partir de predição inter ou intra é filtrado de modo adicional pelo filtro 264.
[0068] Conforme já descrito acima, o filtro 120, 220 pode ser usado em um nível de quadro, por exemplo, o filtro 120, 220 pode ser configurado para processar um quadro reconstruído a partir de um fluxo de vídeo reconstruído decodificado para gerar um quadro reconstruído filtrado, em que o quadro reconstruído inclui uma pluralidade de blocos. O filtro 120, 220 também pode ser usado em um nível de bloco imediatamente após reconstrução de bloco sem esperar por um quadro inteiro, por exemplo, o filtro 120, 220 pode ser configurado para processar um bloco reconstruído para gerar um bloco reconstruído filtrado, em que o bloco reconstruído inclui uma pluralidade de pixels.
[0069] O filtro 120, 220, 145 ou 264 compreende um ou mais processadores (ou uma ou mais unidades de processamento). Conforme será explicado em mais detalhes abaixo, o um ou mais processadores (ou uma ou mais unidades de processamento) são configurados para: carregar um pixel atual e seus pixels vizinhos em um buffer linear de acordo com um modelo de varredura predefinido (em outras palavras, ordem de varredura ou padrão de varredura); obter componentes de espectro realizando-se transformada 1D para cada pixel no buffer linear; obter componentes de espectro filtrados multiplicando-se cada componente de espectro com um coeficiente de ganho, em que o coeficiente de ganho depende de um componente de espectro correspondente e um parâmetro de filtragem; obter pixels filtrados realizando-se transformada 1D inversa para espectro filtrado; e gerar um bloco reconstruído filtrado com base nos pixels filtrados estimados em etapas de processamento anteriores. Em um exemplo, o coeficiente de ganho depende de um componente de espectro correspondente e um parâmetro de filtragem. Em outro exemplo, o coeficiente de ganho depende de um ou mais parâmetros de filtragem e um ou mais componentes de espectro correspondentes. Em outro exemplo, o respectivo coeficiente de ganho pode depender de um ou mais parâmetros de filtragem e do componente de espectro correspondente bem como componentes espectrais vizinhos à esquerda e à direita do componente de espectro.
[0070] A revelação descreve filtro in-loop para codec de vídeo com perdas que realiza filtragem local e/ou não local de bloco reconstruído a partir de quadro reconstruído. De acordo com um exemplo, o quadro reconstruído é dividido em conjunto de pequenos blocos retangulares não sobrepostos (blocos CU). Na próxima etapa, cada bloco reconstruído (bloco de CU reconstruído) é filtrado no domínio de frequência independentemente de outros blocos reconstruídos. O filtro também pode ser aplicado após transformada e reconstrução, e o resultado filtrado é usado tanto para saída quanto para predição espacial e temporal.
[0071] Conforme outro exemplo, a revelação descreve filtro de predição para codec de vídeo com perdas que realiza filtragem local e/ou não local de bloco de predição de quadro reconstruído.
[0072] Na primeira etapa de processamento, todos os pixels dentro de bloco reconstruído podem ser processados independentemente um do outro. Para processamento de pixel r(0), pixels vizinhos são usados. Por exemplo, conforme ilustrado na Figura 3A, pixels r(1) a r(7) são usados, e pixels r(0) a r(7) formam um grupo de processamento.
[0073] A Figura 3A ou 3B mostra um diagrama esquemático 300, 300’ que ilustra aspectos de um processo de filtragem implantado em um filtro de acordo com uma modalidade. Na etapa 302, 302’, um pixel atual e seus pixels vizinhos de um bloco são carregados em um buffer linear de acordo com um modelo de varredura predefinido. Conforme um exemplo, o bloco pode ser um bloco predito. Conforme outro exemplo, o bloco pode ser um bloco reconstruído.
[0074] Na etapa 304, 304’, transformada 1D é realizada para pixel r(0) e seus pixels vizinhos r(1) a r(7) no buffer linear para obter componentes de 𝑹 = 𝟏𝑫_𝑻𝒓𝒂𝒏𝒔𝒇𝒐𝒓𝒎(𝒓) espectro R:
[0075] Conforme um exemplo, a transformada 1D pode ser uma transformada de Hadamard.
[0076] Deve-se entender que realizar transformada 1D em 4 pixels na linha (por exemplo, pixels A,B,C,D conforme no exemplo na Figura 3B) ou realizar transformada 2D em pixels espacialmente localizados A,B,C,D se refere à implantação específica. Aplicar transformada 2D em 4 pixels A,B,C,D localizados em bloco 2x2 pode levar ao mesmo resultado que aplicar transformada 1D em 4 pixels A,B,C,D sendo obtidos como uma linha. Na etapa 306, 306’, filtragem é realizada no domínio de frequência com base em multiplicação de cada componente de espectro 𝑹(𝒊) por um coeficiente de ganho correspondente 𝑮(𝒊, 𝝈) para obter componentes de espectro filtrados 𝑭(𝒊):
[0077] O conjunto de coeficientes de ganho para todos os 𝑭(𝒊) = 𝑹(𝒊) ∗ 𝑮(𝒊, 𝝈) (1) componentes de espectro é resposta de impulso de frequência do filtro.
[0078] Em um exemplo, o coeficiente de ganho depende de um componente de espectro correspondente e um parâmetro de filtragem. Em outro exemplo, o coeficiente de ganho depende de um ou mais parâmetros de filtragem e um ou mais dos componentes de espectro correspondentes. Em outro exemplo, o respectivo coeficiente de ganho pode depender do um ou mais parâmetros de filtragem e do componente de espectro correspondente bem como componentes espectrais vizinhos à esquerda e à direita do componente de espectro. Se cada coeficiente de ganho for uma função de componente de 𝑅(𝑖)2 𝐺(𝑖, 𝜎) = 𝑅(𝑖)2 +𝑚∗𝜎2 (2) espectro do bloco reconstruído e do parâmetro de filtragem, ou for uma função de componente de espectro do bloco predito e do parâmetro de filtragem, coeficiente de ganho 𝑮(𝒊, 𝝈) pode ser descrito pela seguinte fórmula como um exemplo: em que (i) é um índice de um componente de espectro, R(i) é o componente de espectro que corresponde a índice (i), 𝐺(𝑖, 𝜎) é o coeficiente de ganho que corresponde a R(i) ,σ é o parâmetro de filtragem, m é constante de normalização igual ao número de componentes de espectro. Por exemplo, m é 1, 2, 3, 4 ….Diferentes componentes de espectro podem ter um mesmo coeficiente de ganho, ou podem ter diferentes coeficientes de ganho.
[0079] Para essas transformadas que têm componentes de espectro que correspondem à média (FFT, DCT, DST etc.) ou soma (Hadamard) de amostras de entrada do bloco de transformada (normalmente primeiro componente que corresponde a valor de DC), pode ser vantajoso ter coeficiente de filtragem igual a 1 para evitar mudança de luminância média do bloco filtrado. Isso significa desviar (sem filtragem) para primeiro componente de espectro que corresponde a valor de DC.
[0080] σ como o parâmetro de filtragem, pode ser derivado de parâmetro de quantização (QP) de codec nos lados de codificador e decodificador, por exemplo, com o uso da seguinte fórmula: 𝝈 = 𝑘 ∗ 𝟐(𝑛∗(𝑸𝑷−𝑠)) , em que 𝑘, 𝑛 e 𝑠 são constantes que têm valores como exemplo: 𝑘 =
2.64, 𝑛 = 0.1296, 𝑠 = 11. Diferentes componentes de espectro podem ter um mesmo parâmetro de filtragem, ou podem ter diferentes parâmetros de filtragem.
[0081] Os parâmetros 𝑘, 𝑛 e 𝑠 podem ser selecionados de tal modo a tornar sigma dependente de tamanho de etapa de quantização que duplica cada vez que o valor de QP aumenta em 6 nos padrões de codificação de vídeo mais 1 recentes. No exemplo com parâmetros 𝑘 = 0.5, 𝑛 = 6 𝑒 𝑠 = 0 o parâmetros σ é derivado da seguinte forma:
𝑸𝑷 𝝈 = 0,5 ∗ 𝟐( 𝟔 )
[0082] Matrizes de escala de quantização são bastante usadas para aperfeiçoar a qualidade de compressão de vídeo. Nesse método, tamanho de etapa de quantização derivado com base em QP é multiplicado por fator de escala transmitido em fluxo de bits. Para tal método, derivação de parâmetros σ pode ser com base em tamanho de etapa de quantização escalonado real usado para determinado QP: 𝝈 = 𝑘 ∗ 𝐐𝐮𝐚𝐧𝐭𝐢𝐳𝐚𝐭𝐢𝐨𝐧_𝐬𝐭𝐞𝐩_𝐬𝐢𝐳𝐞(𝐐𝐏 − 𝐬)
[0083] Constantes 𝑘, 𝑛 e 𝑠 podem ter valores fixos para cálculo de σ, ou podem ter diferentes valores dependendo de QP, tamanho e formato de bloco, tipo de predição (inter/intra) para bloco atual. Por exemplo, para blocos quadrangulares preditos intra com tamanho 32x32 ou mais parâmetro 𝑠 pode ser calculado como 𝑠 = 11 + 8 = 19. Como filtro equivalente, parâmetro σ tem valor menor que leva a filtro mais suave que é mais adequado para blocos preditos intra quadrangulares grandes que normalmente correspondem a regiões planas. Conforme outro exemplo, 𝑘 pode ser modificado com base em profundidade de bit de pixels 𝑘𝑚𝑜𝑑 = 𝑘*(1 << (bit_depth - 8)).
[0084] De acordo com o método 300, 300’, coeficiente de ganho para cada frequência é derivado de componente de espectro dos pixels reconstruídos ou pixels preditos. Portanto, o método 300, 300’ não necessita de transmissão de parâmetros de filtragem e pode ser aplicado para qualquer bloco reconstruído ou bloco predito sem sinalização adicional.
[0085] Os detalhes de LUT são discutidos.
[0086] Pode-se notar que filtragem implica multiplicação de componente de espectro R(i) em coeficiente de escala que é sempre menor que
1. Pode-se observar também que com valores altos de R(i), coeficiente de escala é próximo a 1. Com base nessa observação, filtragem de espectro é implantada com o uso de tabela de consulta que permite excluir multiplicações e divisão de operações de filtragem:
[0087] Coeficiente de ganho de espectro é menos de 1, então, filtragem pode ser implantada com base em leitura de tabela de consulta (LUT) pequena de acordo com as seguintes fórmulas: 𝑅(𝑖) , 𝐴𝑏𝑠(𝑅(𝑖)) ≥ 𝑇𝐻𝑅 𝐹(𝑖, 𝜎) = { 𝐿𝑈𝑇(𝑅(𝑖), 𝜎), 𝑅(𝑖) > 0 −𝐿𝑈𝑇(−𝑅(𝑖), 𝜎), 𝑅(𝑖) ≤ 0 𝑅(𝑖)3 em que 𝐿𝑈𝑇(𝑅(𝑖), 𝜎) = 𝑅(𝑖)2 +m∗𝜎2. (i) é um índice de um componente de espectro, R(i) é o componente de espectro que corresponde ao índice (i), σ é o parâmetro de filtragem, e THR é um limiar, m é constante de normalização igual ao número de componentes de espectro. Por exemplo, m é 1, 2, 3, 4 ….
[0088] Conforme um exemplo, THR pode ser calculado a partir da seguinte fórmula, 𝑇𝐻𝑅 2 =C 𝑇𝐻𝑅 2 +𝑚∗𝜎2 em que C é um valor próximo a 1, por exemplo, 0,8 ou 0,9. Para reduzir tamanho de LUT, limiar THR pode ser dependente de valor de QP.
[0089] Para reduzir adicionalmente tamanho de LUT, o segundo limiar pode ser introduzido para substituir pequenos valores filtrados por zero. Nesse caso, o componente de espectro filtrado é 𝐹(𝑖, 𝜎) é derivado de modo adicional como: 𝑅(𝑖) , 𝐴𝑏𝑠(𝑅(𝑖)) > 𝑇𝐻𝑅 0, 𝐴𝑏𝑠(𝑅(𝑖)) < 𝑇𝐻𝑅2 𝐹(𝑖, 𝜎) = 𝐿𝑈𝑇(𝑅(𝑖), 𝜎), 𝑅(𝑖) > 0 {−𝐿𝑈𝑇(−𝑅(𝑖), 𝜎), 𝑅(𝑖) ≤ 0 Em que THR2 define o limiar abaixo do qual componente de espectro filtrado é considerado ser zero. O segundo THR2 também pode ser definido dependendo de valor de QP.
[0090] Após filtragem no domínio de frequência, transformada 1D inversa é realizada para componente de espectro filtrado na etapa 308 para obter pixels filtrados 𝒇: 𝒇 = 𝟏𝑫_𝑰𝒏𝒗𝒆𝒓𝒔𝒆_𝑻𝒓𝒂𝒏𝒔𝒇𝒐𝒓𝒎(𝑭)
[0091] Na etapa 310, 310’, o resultado de transformada 1D inversa é colocado em buffer linear de pixels reconstruídos filtrados ou pixels filtrados.
[0092] Na etapa 312, 312’ (não mostrada na Figura 3A ou 3B), um bloco filtrado é gerado com base nos pixels filtrados estimados em etapas de processamento anteriores. Conforme um exemplo, o bloco filtrado pode ser um bloco predito filtrado. Conforme outro exemplo, o bloco filtrado pode ser um bloco reconstruído filtrado.
[0093] Conforme mostrado na Figura 3A como uma modalidade, após a etapa de filtragem 306, o pixel filtrado f(0) é colocado em sua posição original de acordo com o modelo de varredura predefinido. Outras amostras filtradas f(1) a f(7) não são usadas. Em outra modalidade, mais de um pixel filtrado, por exemplo, todos os pixels filtrados de buffer linear de amostras filtradas são adicionados a um buffer de acúmulo de acordo com o modelo de varredura predefinido usado na etapa 302 da Figura 3A. O buffer de acúmulo deve ser inicializado por zero antes da etapa de filtragem. Na última etapa de normalização, pixels filtrados finais são obtidos como valores acumulados no buffer de acúmulo divididos pelo número de pixels adicionado a uma posição atual do buffer de acúmulo, em outras palavras, número de valores de pixels adicionado à posição atual de buffer de acúmulo em etapas de processamento anteriores. Então, o bloco reconstruído filtrado ou o bloco predito é gerado com base nos pixels filtrados finais.
[0094] Conforme outra modalidade, um filtro tem a mesma implantação para filtragem de unidade de codificação (CU) intra e inter.
[0095] O filtro de domínio de transformada de Hadamard é sempre aplicado a blocos reconstruídos luma com coeficientes de transformada diferentes de zero, excluindo blocos 4x4 e se parâmetro de quantização de fatia for maior que 17. Os parâmetros de filtro são derivados explicitamente das informações codificadas. O filtro proposto, se aplicado, é realizado em amostras decodificadas logo após reconstrução de bloco. O resultado filtrado é usado tanto para saída como para predição espacial e temporal.
[0096] O processo de filtragem é discutido, conforme apresentado de maneira esquemática na Figura 3C.
[0097] Para cada pixel de bloco reconstruído, processamento de pixel compreende as seguintes etapas:
[0098] Varrer 4 pixels vizinhos ao redor de pixel de processamento incluindo atual de acordo com padrão de varredura.
[0099] Transformada de Hadamard de 4 pontos de pixels de leitura.
[0100] Filtragem de espectro com base na fórmula (1) e (2).
[0101] O primeiro componente de espectro que corresponde a valor de DC é desviado sem filtragem.
[0102] Transformada de Hadamard Inversa de 4 pontos de espectro filtrado.
[0103] Após a etapa de filtragem, os pixels filtrados são colocados em suas posições originais em buffer de acúmulo.
[0104] Após concluir a filtragem de pixels, os valores acumulados são normalizado pelo número de grupos de processamento usado para cada filtragem de pixel. Devido ao uso de preenchimento de uma amostra ao redor do bloco, o número de grupos de processamento é igual a 4 para cada pixel no bloco e a normalização é realizada desviando para a direita em 2 bits.
[0105] Pode-se notar que todos os pixels no bloco podem ser processados independentemente no caso de paralelismo máximo ser necessário.
[0106] Nessas modalidades, o limiar THR é definido para um valor predefinido, por exemplo, 128, que, em caso de implantação simples, exige o armazenamento de 128 (1 << 7) entradas de valores de 7 bits por cada QP.
[0107] O tamanho de LUT influencia na quantidade de exigências de memória em chip e no custo de uma implantação de hardware do filtro. Para reduzir quantidade de armazenamento em chip, a LUT se calculada apenas para conjunto limitado de QPs iniciando de QP 20 com intervalo constante de 8. No total, cinco LUTs predefinidas (para grupo de cinco QPs) são armazenadas. Para filtragem de CUs de bloco atual, QP é arredondado para mais próximo de um da tabela.
[0108] Para redução adicional de tamanho de LUT, os N bits menores são descartados (ou ignorados) durante a geração de LUT. Isso permite ter representação de tabela esparsa.
[0109] Para implantação A exemplificativa, N é igual a 2, que leva a 7 - 2 = 5 bits de profundidade de tabela (32 entradas de valores de 7 bits);
[0110] Para implantação B exemplificativa, N é igual a 3, que leva a 7 - 3 = 4 bits de profundidade de tabela (16 entradas de valores de 7 bits).
[0111] Desse modo, tamanho de memória total necessário para armazenamento de LUT inteira:
[0112] Para implantação A exemplificativa: 5x32x7 bits = 1.120 bits = 140 bytes;
[0113] Para implantação B exemplificativa: 5x16x7 bits = 560 bits = 70 bytes;
[0114] Implantação B exemplificativa está alvejando 16 bytes de tamanho de LUT para possibilitar acesso paralelo em implantação de software devido à capacidade de armazenar LUT inteira em um registrador SSE de 16 bytes, portanto essa configuração é sugerida.
[0115] Se a transformada de Hadamard for usada, e um pixel filtrado for colocado em sua posição original de acordo com o modelo de varredura predefinido, então, o seguinte pseudocódigo descreve processo de filtragem do método 300: // reconstructed/predicted pixels scan const int x0 = pIn[p0]; const int x1 = pIn[p1]; const int x2 = pIn[p2]; const int x3 = pIn[p3]; // p0-p3 definem padrão de varredura // 1D forward Hadamard transform const int y0 = x0 + x2; const int y1 = x1 + x3; const int y2 = x0 - x2; const int y3 = x1 - x3; const int t0 = y0 + y1; const int t1 = y0 - y1; const int t2 = y2 + y3;
const int t3 = y2 - y3; // frequency domain filtering const int z0 = pTbl[t0]; const int z1 = pTbl[t1]; const int z2 = pTbl[t2]; const int z3 = pTbl[t3]; // backward Hadamard transform const int iy0 = z0 + z2; const int iy1 = z1 + z3; const int iy2 = z0 - z2; const int iy3 = z1 - z3; // output filtered pixel pOut[p0_out] = iy0 + iy1;
[0116] Se a transformada de Hadamard for usada, e mais de um pixel filtrado a partir de buffer linear de amostras filtradas for adicionado ao buffer de acúmulo, então, o seguinte pseudocódigo descreve o processo de filtragem deste cenário: // reconstructed/predicted pixels scan const int x0 = pIn[p0]; const int x1 = pIn[p1]; const int x2 = pIn[p2]; const int x3 = pIn[p3]; // p0-p3 definem padrão de varredura // 1D forward Hadamard transform const int y0 = x0 + x2; const int y1 = x1 + x3; const int y2 = x0 - x2; const int y3 = x1 - x3; const int t0 = y0 + y1; const int t1 = y0 - y1; const int t2 = y2 + y3; const int t3 = y2 - y3; // frequency domain filtering const int z0 = pTbl[t0]; const int z1 = pTbl[t1];
const int z2 = pTbl[t2]; const int z3 = pTbl[t3]; // backward Hadamard transform const int iy0 = z0 + z2; const int iy1 = z1 + z3; const int iy2 = z0 - z2; const int iy3 = z1 - z3;
[0117] Conforme modalidade alternativa, o buffer de acúmulo deve ser inicializado por valores de pixel não filtrados multiplicados pelo número máximo de valores de pixel a ser adicionado no bloco. O número máximo de valores de pixel a ser adicionado no bloco é definido com base em modelo de varredura. De fato, modelo de varredura define um número de valores de pixel adicionado para cada posição. Com base nisso, o número máximo de todas as posições no bloco pode ser selecionado e usado durante inicialização de buffer de acúmulo. Então, durante cada etapa de acúmulo, o valor de pixel não filtrado é subtraído de valor filtrado correspondente e adicionado ao buffer de acúmulo: // filtered pixels accumulation pOut[p0] += iy0 + iy1 // p0-p3 definem padrão de varredura pOut[p1] += iy0 - iy1 pOut[p2] += iy2 + iy3 pOut[p3] += iy2 - iy3 Para reduzir a profundidade de bit de valores de pixel acumulados antes de colocar em buffer de acúmulo, resultado de transformada inversa pode ser normalizado em tamanho de transformada (m): pOut[p0] += ((iy0 + iy1) >> HTDF_BIT_RND4); pOut[p1] += ((iy0 - iy1) >> HTDF_BIT_RND4); pOut[p2] += ((iy2 + iy3) >> HTDF_BIT_RND4); pOut[p3] += ((iy2 - iy3) >> HTDF_BIT_RND4); em que HTDF_BIT_RND4 é igual a 2 para tamanho de transformada de 4.
[0118] Essa modalidade permite que o sistema evite armazenar o número de pixels adicionado à posição atual e permite divisão e multiplicação de substituição por operação de desvio na última etapa de normalização e etapa de inicialização de buffer de acúmulo de modo correspondente se o número máximo de valores de pixel adicionado for uma potência de, por exemplo, 2, 4, 8 etc.
[0119] Para manter precisão de estágio de normalização, o mesmo pode ser realizado em um seguinte modo: // normalização pFiltered[p0] = CLIP3(0, (1 << BIT_DEPTH) - 1, (pOut[p0] + HTDF_CNT_SCALE_RND) >> HTDF_CNT_SCALE); em que HTDF_CNT_SCALE é Log2 de quantidade de pixels colocada em buffer de acúmulo, por exemplo, para quantidade de 4 HTDF_CNT_SCALE é igual a 2, e HTDF_CNT_SCALE_RND é igual a (1 << (HTDF_CNT_SCALE - 1)). CLIP3 é uma função de anexação que garante que amostra filtrada esteja em faixa permitida entre mínimo e máximo valor de amostra.
[0120] Conforme mencionado acima, para evitar mudança de luminância média de bloco filtrado, pode ser vantajoso ignorar filtragem de primeiro componente de espectro (que corresponde a valor de DC). Isso permite, de modo adicional, simplificar a implantação de filtro. Nesse caso, a etapa de filtragem é a seguinte: // filtragem de domínio de frequência const int z0 = t0; const int z1 = pTbl[t1]; const int z2 = pTbl[t2]; const int z3 = pTbl[t3];
[0121] Para cada pixel dentro de bloco reconstruído ou bloco predito, um modelo de varredura é escolhido com base em posição de pixel de filtragem dentro de bloco reconstruído ou bloco predito para etapas 302 e 310. O modelo de varredura é escolhido para garantir que todos os pixels estejam dentro de CU reconstruída ou CU predita e colocados próximos a pixel de processamento. Ordem de varredura arbitrária pode ser usada dentro de modelo. Por exemplo, o modelo de varredura predefinido é definido como conjunto de deslocamentos espaciais ou raster em relação a uma posição do pixel atual dentro do bloco reconstruído ou bloco predito, em que deslocamentos que apontam para pixels vizinhos estão dentro do bloco reconstruído ou bloco predito. Abaixo há um exemplo de modelo de varredura: ( 0,0 ), ( 0,1 ), ( 1,0 ), ( 1,1 ).
[0122] A Figura 4A ilustra um exemplo de modelos para diferentes posições de pixel dentro de bloco quadrangular (por exemplo, bloco predito de CU quadrangular ou bloco reconstruído de CU quadrangular). De acordo com essa Figura, pixels de delimitação podem ser filtrados com base em transformada de 4 pontos e pixels centrais podem ser filtrados com base em transformada de 8 pontos.
[0123] Para blocos reconstruídos ou blocos preditos retangulares, em que tamanho de um lado é maior que outro lado, a varredura deve ser realizada ao longo do lado longo. Por exemplo, para bloco retangular horizontal, a seguinte ordem de varredura pode ser usada ( 0,-3 ), ( 0,-2 ), ( 0,-1 ), ( 0,0 ), ( 0,1 ), (0,2), (0,3), (0,4), em que em cada par (y,x) x é deslocamento horizontal e y é deslocamento vertical em relação à posição de pixel de filtragem dentro de bloco reconstruído ou bloco predito de filtragem.
[0124] O filtro proposto pode ser aplicado seletivamente dependendo de condições: • para blocos reconstruídos ou blocos preditos com sinal residual diferente de zero; • dependendo do tamanho de bloco, por exemplo, para bloco reconstruído ou bloco predito pequeno (tamanho mínimo é menor que limiar); • dependendo de uma proporção de tela do bloco reconstruído ou bloco predito; • dependendo de modo de predição (Intra ou Inter) do bloco reconstruído ou bloco predito, por exemplo, aplicando-se filtro a blocos preditos inter apenas; ou • para qualquer combinação de condições descritas acima.
[0125] Por exemplo, para evitar processamento de pequenos blocos o filtro pode ser desviado (não aplicado) se o tamanho de bloco for menor ou igual a 4x4 pixels. Isso reduz complexidade de pior caso que, como usual, corresponde a processamento de menor bloco.
[0126] Conforme outro exemplo, filtro é aplicado apenas em blocos que têm sinal residual diferente de zero. Isso é benéfico se a quantização ou resíduos forem usados, visto que o filtro visa aperfeiçoar erro de quantização. Se o bloco não tiver resíduo que pode ser uma indicação de que a predição é boa e nenhuma filtragem adicional é necessária.
[0127] Conforme outro exemplo, visto que predição intra normalmente é pior do que inter, o filtro pode ser aplicado a blocos preditos intra independentemente de presença de resíduo diferente de e aplicado a blocos preditos inter apenas se o bloco tiver sinal residual diferente de zero.
[0128] O parâmetro de filtro sigma e padrão de varredura podem variar dependendo de condições listadas acima.
[0129] A Figura 4B ilustra formato de filtro equivalente considerando um pixel dentro de bloco atual para modelo de varredura exemplificativo ( 0,0 ), ( 0,1 ), ( 1,0 ), ( 1,1 ). Para a filtragem de pixel atual, área quadrangular de pixels 3x3 é usada (pixel atual é marcado pela cor cinza-escuro no centro de quadrado 3x3). Pixel filtrado é obtido combinando-se amostras filtradas de domínio de transformada de quatro grupos 2x2. Pode-se entender que, se pixel atual estiver localizado em borda de bloco (por exemplo, borda de topo), grupos 2x2 topo esquerdo e topo direito estão indisponíveis e apenas dois grupos 2x2 (inferior esquerdo e inferior direito) podem ser usado para filtragem. Além disso, se pixel atual estiver localizado em canto de bloco (por exemplo, canto topo-esquerdo), apenas um grupo 2x2 (inferior direito) pode ser usado para filtragem.
[0130] Para aumentar a qualidade de filtragem usando-se mais quatro grupos 2x2 para pixels de borda e canto, o bloco atual pode ser preenchido por amostras adicionais. A Figura 4C fornece um exemplo de preenchimento nos lados esquerdo e topo. Amostras de preenchimento podem ser obtidas a partir de blocos já reconstruídos.
[0131] Para unificação adicional de processo de filtragem para todos os pixels em bloco (quatro grupos 2x2 são usados para filtragem de todos os pixels no bloco atual), além de preenchimento topo-esquerdo, bloco atual também pode ser estendido por preenchimento inferior-direito, conforme ilustrado na Figura 4D. A unificação de filtragem é benéfica devido à simplificação de implantação excluindo-se casos de processamento especial para pixels de canto e/ou pixels de borda.
[0132] Amostras de preenchimento são obtidas, preferencialmente, a partir de amostras vizinhas ajustadas a partir de blocos já reconstruídos. Em codecs de vídeo do estado da técnica, esses blocos já reconstruídos podem ser localizados tanto no lado esquerdo ou topo a partir de bloco atual ou no lado direito ou inferior dependendo de ordem de reconstrução de bloco. Com o uso de mais informações de amostras de ajuste, isso aperfeiçoa a qualidade de filtragem e torna a transição entre blocos mais suave.
[0133] A recuperação de amostras reconstruídas de blocos ajustados ou blocos previamente reconstruídos pode exigir carga de memória adicional para implantação de hardware ou software. Para minimizar ou excluir memória adicional, é benéfico usar amostras destinadas para predição intra de bloco atual que são comumente obtidas de uma, duas ou mais linhas e colunas de blocos vizinhos ajustados para bordas de bloco atual. Essas amostras são normalmente armazenadas em memória rápida (também conhecida como buffer de “linha”) para acesso fácil para predição intra e denominadas amostras de referência de predição intra.
[0134] Deve-se observar ainda que, em algumas implantações, antes de realizar predição intra, amostra de referência (amostras de referência intra) são pré-processadas antes de predição, por exemplo, por filtragem de suavização, realce, de-ringing ou bilateral. Nesse caso, pode ser benéfico usar amostras pré-processadas para preenchimento de bloco atual.
[0135] Se algumas amostras na área preenchida não estiverem disponíveis, devido à ordem de reconstrução de bloco ajustado, amostras necessárias podem ser preenchidas a partir do bloco atual expandindo pixels de borda para a área preenchida, conforme ilustrado na Figura 4D.
[0136] A Figura 5A mostra um diagrama de fluxo que ilustra etapas de um método de filtragem in-loop correspondente 500 de acordo com uma modalidade. O bloco reconstruído compreende uma pluralidade de pixels. O método 500 compreende as seguinte etapas: carregar (502) um pixel atual e seus pixels vizinhos em um buffer linear de acordo com um modelo de varredura predefinido; obter (504) componentes de espectro realizando-se transformada 1D para pixels no buffer linear; obter (506) componentes de espectro filtrados multiplicando-se cada componente de espectro com um coeficiente de ganho, em que o coeficiente de ganho depende de um componente de espectro correspondente e um parâmetro de filtragem; obter (508) pixels filtrados realizando-se transformada 1D inversa para componentes de espectro filtrados; e gerar (510) um bloco reconstruído filtrado com base nos pixels filtrados estimados em etapas de processamento anteriores. O método 500 pode ser realizado pelo aparelho de codificação, conforme mostrado na Figura 1 e o aparelho de decodificação, conforme mostrado na Figura 2. Informações detalhadas 300 da Figura 3A ou informações 300’ da Figura 3B também são aplicadas ao método 500, conforme mostrado na Figura 5A.
[0137] De modo similar à Figura 5A, a Figura 5B mostra um diagrama de fluxo que ilustra etapas de um método de filtragem in-loop correspondente 500’ de acordo com outra modalidade. Nesse exemplo, o bloco (ou quadro) é um bloco predito, e o bloco filtrado é um bloco predito filtrado. A descrição detalhada da Figura 5B é similar à Figura 5A.
[0138] A implantação de hardware é discutida.
[0139] O filtro de domínio de transformada de Hadamard é colocado logo após reconstrução de bloco e amostras de processo que podem ser envolvidas em reconstrução de blocos subsequente particularmente como amostras de referência de predição intra. Desse modo, a latência introduzida pelo filtro precisa ser minimizada para garantir que total pipeline de reconstrução não seja muito afetada.
[0140] A transformada de Hadamard é considerada relativamente simples para implantação de hardware. Apenas adições são necessárias para sua implantação e não multiplicações. Conforme pode ser visto a partir de Pseudocódigo 1 abaixo, transformada direta e inversa contém 4 adições que podem ser realizadas em paralelo ou reutilizando-se resultados intermediários com duas operações de adição sequenciais. Pseudocódigo 1
[0141] Transformada de Hadamard direta e inversa podem ser implantadas em hardware usando-se lógica combinatória. Mais atenção é exigida a acesso rápido e paralelo à LUT.
[0142] A LUT com base em SRAM é discutida.
[0143] Nesta implantação exemplificativa, a LUT é armazenada em RAM Estática de porta única em chip (Figura 6).
[0144] Uma vez que os dados de etapa de processamento anterior estão disponíveis no buffer aumentando a borda do relógio, os mesmos são acessados por lógica combinatória que implanta transformada de Hadamard direta (contendo duas adições subsequentes). Após concluir a lógica combinatória, endereço é disponível para cada LUT. Com o uso de inversor e borda decrescente do relógio, os dados são acessados a partir da SRAM. Segunda lógica combinatória que implanta transformada de Hadamard inversa e normalização é iniciada imediatamente após dados de LUT estarem disponíveis. As amostras filtradas de saída se tornam disponíveis ao final de ciclo de relógio atual e estão prontas para processamento pelo próximo algoritmo na próxima borda crescente do relógio.
[0145] A LUT com base em flip-flop é discutida.
[0146] Considerando que uma tabela para processo de filtragem é limitada em 16 entradas, parece mais eficiente implantar LUT com base em flip- flops. Tal projeto não exige diversas LUTs para processamento paralelo e borda de relógio para acesso de dados. O acesso paralelo é fornecido por multiplexador, conforme retratado na Figura 7, que ilustra projeto exemplificativo para processar um grupo 2x2. No projeto sugerido, 16 flip-flops de 7 bits são necessários para fornecer acesso paralelo durante o processo de filtragem. A LUT específica de QP pode ser carregada em flip-flops uma vez que QP para CU atual estiver disponível.
[0147] Combinando resultados de filtragem de quatro grupos 2x2 com reutilização de resultados do mesmo grupo espacial, saída de filtro final é gerada, conforme retratado na Figura 8.
[0148] A análise fornecida acima permite concluir que o filtro proposto pode ser implantado em hardware dentro de um relógio com o uso de implantação de LUT com base em flip-flop ou SRAM.
[0149] Uma análise de complexidade é discutida.
[0150] Medir impacto em Taxa de bits/PSNR em relação à âncora(s).
[0151] Análise de complexidade (por exemplo, medida de tempo de codificação e decodificação, análise de complexidade preenchendo-se a tabela abaixo). Precisão Utilização Míni- de paralela mo Complexidade Nú- multipli- (cada Como Tama computacional mero cação amostra Exigên- derivar -nho format (node de Teste pode ser cia de coefi- de CU o de multiplicações/ Ciclos no filtrada memó- ciente para filtro adições/desvios/ de indepen- ria s de aplica verificações*) relógi dentemente filtro r por amostra o de outras filtros amostras)
n/a < 1 140 Pré- 4x8, relógi bytes calcu- 8x4 Adição 0/20+4 l-bit o (32 lado para valore em
14.3a 3x3 arredondamento/5/ sim s de 7 LUT 6 bits por grupo qp) n/a < 1 70 Pré- 4x8, relógi bytes calcu- 8x4 o (16 lado Adição 0/20+4 l-bit valore em para 14,3b 3x3 sim s de 7 LUT arredondamento /5/6 bits por grupo qp) * máx/min/abs são contabilizados como verificações Tabela 1. Resumo de análise de complexidade de CE14-3
[0152] Resultados experimentais são discutidos.
[0153] Resultados objetivos são discutidos.
[0154] O desempenho objetivo é apresentado nas seguintes tabelas: Todos Intra Main10 Sobre BMS-2.0.1 com config VTM Y U V EncT DecT Classe A1 -0,19% 0,29% 0,24% 110% 115% Classe A2 -0,35% 0,31% 0,32% 109% 112% Classe B -0,42% 0,29% 0,32% 109% 113% Classe C -0,83% 0,23% 0,42% 110% 110% Classe E -0,54% 0,28% 0,19% 109% 114% Total -0,48% 0,28% 0,31% 109% 112% Classe D -0,61% 0,47% 0,01% 109% 108% Classe F -0,82% 0,07% 0,04% 108% 107% (opcional)
Acesso Aleatório Main 10 Sobre BMS-2.0.1 com config VTM Y U V EncT DecT Classe A1 -0,43% -0,23% -0,25% 105% 104% Classe A2 -0,92% -0,57% -0,43% 105% 103% Classe B -0,69% -0,02% -0,27% 106% 104% Classe C -0,75% 0,10% 0,14% 105% 104% Classe E Total -0,70% -0,14% -0,19% 105% 104% Classe D -0,67% -0,14% 0,53% 104% 103% Classe F -0,77% 0,10% 0,13% 104% 102% (opcional)
Pequeno atraso B Main10 Sobre BMS-2.0.1 com config VTM Y U V EncT DecT Classe A1 Classe A2 Classe B -0,58% 0,52% 0,54% 104% 104% Classe C -0,74% 0,33% 0,52% 104% 104% Classe E -0,75% 0,31% 1,09% 102% 101% Total -0,68% 0,40% 0,67% 104% 103% Classe D -0,90% 0,75% 0,28% 104% 104% Classe F -0,73% 0,20% -0,09% 103% 102% (opcional) Tabela 2. Desempenho de codificação de teste 14-3a Todos Intra Main10 Sobre BMS-2.0.1 com config VTM Y U V EncT DecT Classe A1 -0,17% 0,28% 0,28% 110% 115% Classe A2 -0,33% 0,27% 0,29% 109% 112% Classe B -0,40% 0,31% 0,39% 109% 113% Classe C -0,82% 0,20% 0,32% 109% 110%
Classe E -0,54% 0,34% 0,25% 109% 113% Total -0,47% 0,28% 0,32% 109% 112% Classe D -0,65% 0,43% 0,22% 109% 108% Classe F -0,81% 0,01% 0,12% 108% 107% (opcional) Acesso Aleatório Main 10 Sobre BMS-2.0.1 com config VTM Y U V EncT DecT Classe A1 -0,41% -0,36% -0,24% 105% 105% Classe A2 -0,92% -0,49% -0,37% 105% 103% Classe B -0,69% -0,12% 0,12% 106% 104% Classe C -0,75% 0,14% 0,10% 105% 104% Classe E Total -0,70% -0,17% -0,06% 105% 104% Classe D -0,69% -0,30% 0,49% 104% 103% Classe F -0,82% 0,11% 0,11% 104% 102% (opcional) Pequeno atraso B Main10 Sobre BMS-2.0.1 com config VTM Y U V EncT DecT Classe A1 Classe A2 Classe B -0,57% 0,49% 0,69% 104% 104% Classe C -0,76% 0,31% 0,42% 104% 106% Classe E -0,67% -0,66% -0,48% 102% 102% Total -0,66% 0,14% 0,31% 103% 104% Classe D -0,88% 0,92% 0,31% 103% 105% Classe F -0,74% 0,38% -0,15% 103% 102% (opcional) Tabela 3. Desempenho de codificação de teste 14-3b
[0155] LUT sugerida 70bytes com 16 bytes por QP, permitindo implantação HW 1 relógio. Etc. Proposta para adotar filtro de domínio de transformada de Hadamard para a próxima versão de VTM.
[0156] As referências a seguir estão incorporadas neste documento a título de referência como se estivessem reproduzidas em sua totalidade:
[0157] Documento de Equipe de Exploração de Vídeo Conjunta (JVET) JVET-K0068.
[0158] O conteúdo abaixo ilustra exemplos para otimizar a LUT.
[0159] Conforme um exemplo 1, um conjunto de parâmetros de quantização (QPs) é escolhido para gerar a tabela de consulta (LUT), em que o conjunto de QPs inclui um primeiro QP que corresponde a índice (i) e um segundo QP que corresponde a índice (i+1), e o primeiro QP e o segundo QP têm um intervalo constante. Por exemplo, o intervalo pode equivaler a 8, 10 ou
16.
[0160] Por exemplo, assumindo o intervalo constante sendo 8 como um exemplo, tabela esparsa tendo LUT para qp = {20, 28, 36, 44, 52}. O intervalo entre o primeiro gp 20 e o segundo gp 28 é 8. De modo similar, o intervalo entre o segundo gp 28 e o terceiro gp 36 é 8. Durante filtragem, tabela com QP mais próximo é escolhida.
[0161] Conforme outro exemplo, assumindo o intervalo constante sendo 8 conforme um exemplo, tabela esparsa tendo LUT para qp = {18, 26, 34 ,42, 50}. O intervalo entre o primeiro gp 18 e o segundo gp 26 é 8. De modo similar, o intervalo entre o segundo gp 26 e o terceiro gp 34 é 8. Durante filtragem, tabela com QP mais próximo é escolhida.
[0162] Tamanho de LUT: 5x128 = 640 bytes Abaixo há pseudocódigo 2 que reflete quais QPs são escolhidos para gerar tabelas de consulta (LUT). pseudocódigo 2
[0163] No pseudo código, HTDF_QP_ROUND representa o intervalo constante. Ter o intervalo como potência de dois é vantajoso que permite implantar operação de divisão para cálculo de índice como um desvio. Deve-se observar que diferentes valores de intervalo constante podem ser escolhidos, por exemplo, 2, 4, 10, 15 ou 16 etc. além disso, como modalidade alternativa, um intervalo pode ser arbitrário e que LUT é calculada para conjunto arbitrário de QPs.
[0164] Durante processo de filtragem, índice correspondente LUT para determinado QP é calculado como: int idx = ((qp - HTDF_MIN_QP) + (HTDF_QP_ROUND >> 1)) / HTDF_QP_ROUND; ou, de modo alternativo, com menos precisão: int idx = (qp - HTDF_MIN_QP) / HTDF_QP_ROUND; Se intervalo constante for potência de 2, por exemplo, então, índice de LUT pode ser calculado de maneira vantajosa com o uso de operação de desvio em vez de divisão: int idx = (qp - HTDF_MIN_QP) >> HTDF_QP_ROUND_LOG2 = (qp - HTDF_MIN_QP) >> 3;
[0165] Conforme outro exemplo 2, decodificador ou codificador descarta N bits de valores de tabela, e N é um número inteiro. Isso permite ter representação de LUT esparsa que armazena apenas valores selecionados a partir da determinada faixa. Por exemplo, N é 3. Valor de tabela máx é 127 (7 bits), descartando 3 bits, o resultado é 4 bits, ou seja, 16 entradas de valores de 7 bits – 16 bytes aproximadamente.
[0166] Abaixo há pseudocódigo 3 que descreve como LUT é gerada de acordo com determinado valor de qp. pseudocódigo 3 #define HTDF_TBL_SH 3 #define HTDF_TBL_RND ((1<<HTDF_TBL_SH)>>1)
[0167] No determinado exemplo, HTDF_TBL_SH define número de bits para descarte que pode ser 1, 2, 3, 4 etc.
[0168] Abaixo há pseudocódigo que ilustra acesso à LUT esparsa durante filtragem: tbl[(z + HTDF_TBL_RND)>> HTDF_TBL_SH]
[0169] Ao combinar os exemplos 1 e 2 acima, a Figura 9, conforme um exemplo, mostra o resultado de otimização da LUT. Conforme mostrado na Figura 9, combinando exemplos 1 e 2: 5 tabelas x 16 entradas x 7 bits = 560 bits = 70 bytes.
[0170] Deve-se observar que quantidade de entradas de LUT é definida por HTDF_SHORT_TBL_THR (valor de limiar de parágrafo [0076]) e HTDF_TBL_SH número de bits descartados. Considerando limiar igual a 128 (ou seja 1 << 7) e bits descartados 3 resulta em número de entradas de tabelas igual a 1 << (7 - 3) = 1 << 4 = 16. Conforme descrito acima, o limiar de LUT é escolhido, preferencialmente, para tornar o resultado de equação do parágrafo [0077] próximo a 1 e, conforme também descrito no mesmo, o limiar pode diferir dependendo de QP. Desse modo, para geração de LUT para valores de QP superiores, pode ser benéfico aumentar o limiar de 128 (1 << 7) para, por exemplo, 256 (1 << 8). Nesse caso, manter a mesma precisão de entradas de
LUT (por exemplo, com 3 bits descartados) exigirá 32 entradas (32 = 1 << (8 – 3) = 1 << 5). De modo alternativo, para manter tamanho de LUT para QPs maiores igual ao tamanho para QPs menores, a precisão pode ser reduzida de maneira adicional para 4 para manter 16 entradas de tabela 16 = 1 << (8 - 4) = 1 << 4.
[0171] Em algumas implantações, manter o tamanho de LUT limitado e ter THR a fim de manter a equação do parágrafo [0077} pode ser contraditório. De fato, com valores de QP altos (que leva a valor de σ alto) manter tamanho de LUT limitado em, por exemplo, 16 entradas pode levar a gap indesejável em função de transferência de filtro (que é representada por LUT) ao redor do valor 120, conforme retratado na Figura 10 (que também inclui método de subamostragem de LUT descartando 3 bits menos significativos).
[0172] A Figura 11 representa a mesma tabela com entradas de tabela sendo plotadas uma a uma sem consideração de efeito de subamostragem de LUT que ilustra gap entre última entrada de LUT no índice 15 e próximo ponto em função de transferência de filtro no índice 16.
[0173] A Figura 12 ilustra o método como gap pode ser eliminado com o uso de função auxiliar proveniente de valor THR no argumento correspondendo a última entrada de LUT + 1, por exemplo, usando-se equação de linha reta (apontada pela cor verde), proveniente de ponto THR=128 no argumento 16 que corresponde a argumento de última entrada de LUT (que é 15) acrescida em 1 ou, em outras palavras, tamanho de LUT (que é 16) e cruzando eixo geométrico x em algum ponto (por exemplo, em um valor de 11 assim como no determinado exemplo). Deve-se observar que outros tipos de funções auxiliares podem ser usados com base no mesmo princípio, por exemplo, exponencial, logarítmico, parabólico etc. ou combinação dos mesmos.
[0174] A Figura 13 ilustra o exemplo de eliminação de gap obtendo máximo de dois valores enquanto gera a LUT, em que o primeiro valor é entrada 𝑖 𝑅3 de LUT, conforme descrito acima 𝐿𝑈𝑇(𝑅𝑖 , 𝜎) = 𝑅2 +𝑚∗𝜎 2 ; e o segundo é um valor 𝑖 de AuxiliaryFunction (linha reta nesse exemplo) no mesmo argumento i: 𝑅𝑖3 𝐿𝑈𝑇(𝑅𝑖 , 𝜎) = max ( 2 , 𝐴𝑢𝑥𝑖𝑙𝑖𝑎𝑟𝑦𝐹𝑢𝑛𝑐𝜎 (𝑖)) ; 𝑅𝑖 + 𝑚 ∗ 𝜎 2 em que 𝐴𝑢𝑥𝑖𝑙𝑖𝑎𝑟𝑦𝐹𝑢𝑛𝑐𝜎 (𝑖) representa a função auxiliar, e a função auxiliar tem um valor igual a THR em i que corresponde a um argumento de última LUT + 1.
[0175] A Figura 14 ilustra função de transferência de filtro após aplicar o método descrito acima de uso de equação de linha reta auxilar e subamostragem de LUT descartando 3 bits menos significativos.
[0176] Conforme descrito em parágrafo [00144], uma LUT pode ser usada para grupo de QPs. Para abranger a possível faixa de QP, o conjunto de QP predefinido é usado e uma LUT é gerada para cada QP do conjunto. A Figura 15 ilustra exemplo de funções de transferência de filtro dependendo de cinco QPs no conjunto e tabelas correspondentes (de 0 a 4). Nesse exemplo, a tabela 4 é gerada com o uso do método descrito nos parágrafos [00156] a [00157] com função auxiliar de linha reta cruzando eixo geométrico x no valor de 11; e a tabela 3 é gerada com o uso do mesmo método com função auxiliar de linha reta cruzando eixo geométrico x no valor de 9. As tabelas usadas neste exemplo têm valores de acordo com: tabela0 = { 0, 2, 10, 19, 28, 36, 45, 53, 61, 70, 78, 86, 94, 102, 110, 118, }, tabela1 = { 0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115, }, tabela2 = { 0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103, }, tabela3 = { 0, 0, 0, 1, 3, 5, 9, 14, 19, 25, 32, 40, 55, 73, 91, 110, }, tabela4 = { 0, 0, 0, 0, 0, 1, 2, 4, 6, 8, 11, 14, 26, 51, 77, 102, },
[0177] Conforme descrito acima nos parágrafos [00150] a [00153], o método de subamostragem de tabela pode descartar N bits de valores de tabela para reduzir o tamanho de tabela. Conforme também mencionado nesses parágrafos, N pode ser diferente dependendo de QP usado para geração de determinada tabela e valor THR selecionado para essa tabela. Por exemplo, para valores de QP inferiores, o parâmetro de filtragem 𝜎 é relativamente menor que para QPs maiores. Desse modo, o valor absoluto de THR pode ser reduzido sem sacrificar o desempenho. Além disso, para manter tamanho de tabela igual para todos os QPs no conjunto (que é benéfico para simplificar a implantação) e reduzir taxa de subamostragem para QPs menores (que correspondem a nível de menos compressão e melhor qualidade de imagem reconstruída), pode ser benéfico reduzir a quantidade de bits descartados N em comparação a outras tabelas de QP, por exemplo, definindo N para QP lover igual a 2 e definindo THR para 64. A Figura 16 ilustra exemplo de funções de transferência de filtro para cinco QPs no conjunto com base em tabelas correspondentes (de 0 a 4) com N definido para 2 para primeira tabela (que corresponde a faixa de QP lover) e N definido para 3 para outras tabelas. Esse exemplo também inclui método de uso de AuxiliaryFunction para geração de tabela 3 e tabela 4, conforme descrito nos parágrafos [00159] a [00160]. Para tabela 4, função auxiliar de linha reta cruza o eixo geométrico x no valor de 11. Para tabela 4, função auxiliar de linha reta cruza o eixo geométrico x no valor de 9. As tabelas usadas neste exemplo têm valores de acordo com: tabela0 = { 0, 0, 2, 6, 10, 14, 19, 23, 28, 32, 36, 41, 45, 49, 53, 57, }, tabela1 = { 0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115, }, tabela2 = { 0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103, }, tabela3 = { 0, 0, 0, 1, 3, 5, 9, 14, 19, 25, 32, 40, 55, 73, 91, 110, }, tabela4 = { 0, 0, 0, 0, 0, 1, 2, 4, 6, 8, 11, 14, 26, 51, 77, 102, },
[0178] Conforme descrito acima nos parágrafos [00150] a [00153], o método de subamostragem de tabela pode descartar N bits de valores de tabela para reduzir o tamanho de tabela. Conforme também mencionado nesses parágrafos, N pode ser diferente dependendo de QP usado para geração de determinada tabela e valor THR selecionado para essa tabela. Por exemplo, para valores de QP superiores, o parâmetro de filtragem 𝜎 é relativamente maior que para QPs menores que pode exigir o aumento do valor de THR para manter equação do parágrafo [0077] próximo a 1. Ao mesmo tempo, para manter tamanho de LUT igual para todos os QPs no conjunto (que é benéfico devido à simplificação de implantação) e também considerar que, para valores de QP maiores, imagem reconstruída tem mais distorções e subamostragem crescente de LUT é aceitável devido ao efeito subjetivamente imperceptível de subamostragem de LUT na presença de fortes artefatos de compressão, o valor N de bits menos significativos descartados pode ser aumentado em 4, por exemplo, para última e para penúltima tabela no conjunto. A Figura 17 ilustra exemplo de funções de transferência de filtro para cinco QPs no conjunto com base em tabelas correspondentes (de 0 a 4) com N definido para 2 para primeira tabela (tabela 0 correspondendo a faixa de QP lover), N definido para 4 para última e penúltima tabela (tabela 3 e tabela 4) e N definido para 3 para outras tabelas. Nesse exemplo, TRH é definido para 64 para geração de primeira tabela, definido para 256 para última e penúltima tabela e definido para 128 para tabelas remanescentes. Esse exemplo também inclui método de uso de AuxiliaryFunction para geração de tabela 3 e tabela 4, conforme descrito nos parágrafos [00159] a [00160]. Para tabela 4, função auxiliar de linha reta cruza o eixo geométrico x no valor de 6. Para tabela 4, função auxiliar de linha reta cruza o eixo geométrico x no valor de 8. As tabelas usadas neste exemplo têm valores de acordo com: tabela0 = { 0, 0, 2, 6, 10, 14, 19, 23, 28, 32, 36, 41, 45, 49, 53, 57, }, tabela1 = { 0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115, }, tabela2 = { 0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103, }, tabela3 = { 0, 0, 3, 9, 19, 32, 47, 64, 81, 99, 117, 135, 154, 179, 205, 230, }, tabela4 = { 0, 0, 0, 2, 6, 11, 18, 27, 38, 51, 64, 96, 128, 160, 192, 224, },
[0179] A Figura 18 é um diagrama em blocos de um aparelho 600 que pode ser usado para implantar várias modalidades. O aparelho 600 pode ser o aparelho de codificação, conforme mostrado na Figura 1 e o aparelho de decodificação, conforme mostrado na Figura 2. Adicionalmente, o aparelho 600 pode hospedar um ou mais dentre os elementos descritos. Em algumas modalidades, o aparelho 600 é equipado com um ou mais dispositivos de entrada/saída, tais como um alto-falante, microfone, mouse, tela sensível ao toque, teclado alfanumérico, teclado, impressora, visor e similares. O aparelho 600 pode incluir uma ou mais unidades centrais de processamento (CPUs) 610, uma memória 620, um armazenamento em massa 630, um adaptador de vídeo 640 e uma interface de I/O 660 conectada a um barramento. O barramento é um ou mais dentre qualquer tipo de diversas arquiteturas de barramento incluindo um barramento de memória ou controlador de memória, um barramento periférico, um barramento de vídeo ou similares.
[0180] A CPU 610 pode ter qualquer tipo de processador de dados eletrônico. A memória 620 pode ter ou ser qualquer tipo de memória de sistema, tal como memória estática de acesso aleatório (SRAM), memória dinâmica de acesso aleatório (DRAM), DRAM síncrona (SDRAM), memória somente leitura
(ROM), uma combinação das mesmas ou similares. Em uma modalidade, a memória 620 pode incluir ROM para uso na inicialização, e DRAM para armazenamento de programa e dados para uso ao executar programas. Em modalidades, a memória 620 é não transitória. O armazenamento em massa 630 inclui qualquer tipo de dispositivo de armazenamento que armazena dados, programas e outras informações e para tornar os dados, programas e outras informações acessíveis por meio do barramento. O armazenamento em massa 630 inclui, por exemplo, uma ou mais dentre uma unidade de estado sólido, unidade de disco rígido, uma unidade de disco magnético, uma unidade de disco óptico ou similares.
[0181] O adaptador de vídeo 640 e a interface de I/O 660 fornecem interfaces para acoplar dispositivos externos de entrada e saída ao aparelho 600. Por exemplo, o aparelho 600 pode fornecer interface de comando de SQL a clientes. Conforme ilustrado, exemplos de dispositivos de entrada e saída incluem um visor 690 acoplado ao adaptador de vídeo 640 e qualquer combinação de mouse/teclado/impressora 670 acoplado à interface de I/O 660. Outros dispositivos podem ser acoplados ao aparelho 600, e mais ou menos placas de interface podem ser utilizadas. Por exemplo, uma placa de interface serial (não mostrada) pode ser usada para fornecer uma interface serial para uma impressora.
[0182] O aparelho 600 também inclui uma ou mais interfaces de rede 650, que inclui enlaces com fio, tais como um cabo de Ethernet ou similares, e/ou enlaces sem fio para acessar nós ou uma ou mais redes 680. A interface de rede 650 permite que o aparelho 600 se comunique com as unidades remotas por meio das redes 680. Por exemplo, a interface de rede 650 pode fornecer comunicação a banco de dados. Em uma modalidade, o aparelho 600 é acoplado a uma rede de área local ou a uma rede de área ampla para processamento de dados e comunicações com dispositivos remotos, tais como outras unidades de processamento, a Internet, instalações de armazenamento remotas ou similares.
[0183] O projeto proposto de filtro in-loop ou filtro de predição tem as seguintes vantagens em relação a métodos de filtragem adaptativos convencionais, tais como ALF: • O filtro de domínio de frequência proposto deriva parâmetros de filtragem (coeficientes de ganho de domínio de frequência) a partir de quadro reconstruído ou bloco predito no lado de decodificador e, então, não é necessário que parâmetros de filtragem sejam transferidos de codificador para o lado de decodificador. • ALF exige otimização de distorção de taxa (RDO) complexa no lado de codificador para diminuir o número de coeficientes ponderados para transmissão. O método proposto não exige RDO complexa no lado de codificador (sem transferência de parâmetros) e aplicada para todos os blocos que satisfazem as condições predefinidas • ALF é filtro linear no domínio de pixel. O filtro proposto é não linear visto que coeficiente de ganho para cada componente de espectro 1D depende desse valor de componente de espectro. O mesmo permite alcançar ganho de codificação adicional a partir de processamento não linear. • ALF exige multiplicadores universais no lado de decodificador. No método proposto, a filtragem pode ser implantada como tabela de consulta, visto que ganho para cada coeficiente de espectro é menos um. Portanto, o método proposto pode ser implantado sem qualquer multiplicação.
[0184] Desse modo, o filtro é fornecido permitindo aperfeiçoar a eficiência para codificação de vídeo com baixa complexidade.
[0185] Embora um recurso ou aspecto particular da revelação possa ter sido revelado em relação a apenas uma dentre diversas implantações ou modalidades, tal recurso ou aspecto pode ser combinado com um ou mais outros recursos ou aspectos das outras implantações ou modalidades conforme pode ser desejado e vantajoso para qualquer aplicação determinada ou particular. Além disso, na medida em que os termos "incluir", "ter", "com" ou outras variantes dos mesmos são usados na descrição detalhada ou nas reivindicações, tais termos se destinam a ser inclusivos de um modo similar ao termo "compreender". Além disso, os termos "exemplificativo", "por exemplo" e "e.g." significam apenas um exemplo, em vez do melhor ou ideal. Os termos “acoplado” e “conectado”, em conjunto com derivados, podem ter sido usados. Deve-se entender que esses termos podem ter sido usados para indicar que dois elementos cooperam ou interagem um com o outro independentemente de os mesmos estarem em contato direto físico ou elétrico, ou os mesmos não estarem em contato direto um com o outro.
[0186] Embora aspectos específicos tenham sido ilustrados e descritos no presente documento, será verificado por aqueles de habilidade comum na técnica que uma variedade de implantações alternativas e/ou equivalentes pode ser substituída pelos aspectos específicos mostrados e descritos sem se afastar do escopo da presente revelação. Este pedido se destina a abranger quaisquer adaptações ou variações dos aspectos específicos discutidos no presente documento.
[0187] Embora os elementos nas reivindicações a seguir sejam citados em uma sequência particular com identificação correspondente, a menos que as citações de reivindicação impliquem, de outro modo, uma sequência particular para implantar alguns ou todos esses elementos, esses elementos não se limitam necessariamente a ser implantados naquela sequência particular.
[0188] Muitas alternativas, modificações e variações serão evidentes àqueles versados na técnica à luz dos ensinamentos acima. Evidentemente, aqueles versados na técnica reconhecem prontamente que há inúmeras aplicações da invenção além daquelas descritas no presente documento. Embora a presente invenção tenha sido descrita com referência a uma ou mais modalidades particulares, aqueles versados na técnica reconhecem que muitas mudanças podem ser realizadas às mesmas sem se afastar do escopo da presente invenção. Deve-se entender, portanto, que dentro do escopo das reivindicações anexas e seus equivalentes, a invenção pode ser praticada de outro modo além do modo descrito especificamente no presente documento.

Claims (31)

REIVINDICAÇÕES
1. Método para processar um bloco, em que o bloco compreende uma pluralidade de pixels, em que o método compreende: obter um parâmetro de quantização (QP) do bloco, em que o bloco é um bloco reconstruído ou um bloco predito; obter um limiar (THR) com base no QP; e obter uma tabela de consulta com base em QP, de modo a gerar um bloco filtrado com base no limiar e na tabela de consulta.
2. Método, de acordo com a reivindicação 1, em que o método compreende adicionalmente: varrer um pixel atual do bloco e seus pixels vizinhos do pixel atual de acordo com um modelo de varredura predefinido; obter componentes de espectro realizando-se transformada para o pixel atual e seus pixels vizinhos; obter componentes de espectro filtrados usando-se a tabela de consulta e os componentes de espectro.
3. Método, de acordo com a reivindicação 2, um componente de espectro filtrado 𝐹(𝑖, 𝜎) é derivado por: 𝑅(𝑖) , 𝐴𝑏𝑠(𝑅(𝑖)) ≥ 𝑇𝐻𝑅 𝐹(𝑖, 𝜎) = { 𝐿𝑈𝑇(𝑅(𝑖), 𝜎), 𝑅(𝑖) > 0 −𝐿𝑈𝑇(−𝑅(𝑖), 𝜎), 𝑅(𝑖) ≤ 0 em que (i) é um índice de um componente de espectro, R(i) é o componente de espectro que corresponde a índice (i), σ é um parâmetro de filtragem, 𝐿𝑈𝑇(𝑅(𝑖), 𝜎) é um arranjo na tabela de consulta, e THR é o limiar sendo derivado a partir do QP.
4. Método, de acordo com a reivindicação 3, em que 𝐿𝑈𝑇(𝑅(𝑖), 𝜎) = 𝑅(𝑖)3 , m é constante de normalização igual a número de componentes de 𝑅(𝑖)2 +m∗𝜎2 espectro.
5. Método, de acordo com a reivindicação 3 ou 4, em que o parâmetro de filtragem é derivado com base no QP.
6. Método, de acordo com a reivindicação 5, em que o parâmetro de filtragem σ é derivado por 𝝈 = 𝑘 ∗ 𝟐(𝑛∗(𝑸𝑷−𝑠)),
em que QP é o parâmetro de quantização de codec, 𝑘, 𝑛 e 𝑠 são constantes.
7. Método, de acordo com a reivindicação 6, em que 𝑘 = 2,64, 𝑛 = 0,1296 e 𝑠 = 11.
8. Método, de acordo com qualquer uma das reivindicações 1 a 7, em que o limiar é derivado por: 𝑇𝐻𝑅 2 =C, 𝑇𝐻𝑅 2 +𝑚∗𝜎2 em que C é um valor próximo a 1, σ é um parâmetro de filtragem, e m é constante de normalização igual a número de componentes de espectro.
9. Método, de acordo com qualquer uma das reivindicações 1 a 8, em que o método compreende adicionalmente: escolher um conjunto de QPs para obter a tabela de consulta (LUT), em que o conjunto de QPs inclui um primeiro QP que corresponde a índice (i) e um segundo QP que corresponde a índice (i+1), e em que o primeiro QP e o segundo QP têm um intervalo maior que 1.
10. Método, de acordo com a reivindicação 9, em que o intervalo é constante e igual a 8, 10 ou 16.
11. Método, de acordo com qualquer uma das reivindicações 1 a 10, em que o método compreende adicionalmente: descartar N bits a partir de valores de tabela da LUT, N é um número inteiro.
12. Método, de acordo com a reivindicação 11, em que o acesso a elemento de LUT é da seguinte maneira tbl[(z + HTDF_TBL_RND)>> HTDF_TBL_SH], em que HTDF_TBL_SH é apelido de N, e HTDF_TBL_RND = 1 << (HTDF_TBL_SH - 1).
13. Método, de acordo com a reivindicação 11, em que o acesso a elemento de LUT é da seguinte maneira LUT[ ( fHad[ i ] + (1 ≪ ( tblShift − 1 ) ) ) ≫ tblShift] para valores positivos de fHad[i], e −LUT[ (−( fHad[ i ] + (1 ≪ ( tblShift − 1 ) ) ) ≫ tblShift] para valores negativos de fHad[i], em que tblShift é apelido de N, e fHad[i] são componentes de espectro a serem filtrados.
14. Método, de acordo com qualquer uma das reivindicações 11 a 13, em que N é 3.
15. Método, de acordo com qualquer uma das reivindicações 11 a 13, em que para o primeiro QP em um conjunto de QPs, N é igual a 2, e em que o conjunto de QPs é usado para obter a tabela de consulta (LUT); em que para o último QP ou para os dois últimos QPs no conjunto de QPs, N é igual a 4; e em que para os QPs remanescentes do conjunto de QPs, N é igual a
3.
16. Método, de acordo com qualquer uma das reivindicações 11 a 13, N é definido da seguinte maneira; tblShift = tblThrLog2[ qpIdx ] − 4 tblThrLog2[ 5 ] = { 6, 7, 7, 8, 8 } em que tblShift é apelido de N, e qpIdx é derivado com base em QP.
17. Método, de acordo com a reivindicação 16, qpIdx é derivado com base em QP da seguinte maneira; if( pred_mode_flag[ xCb ][ yCb ] = = 0 && nCbW = = nCbH && min(nCbW,nCbH)>=32) qpIdx = Clip3( 0, 4, ( QpY – 28 + ( 1 << 2 ) ) >> 3 ) else qpIdx = Clip3( 0, 4, ( QpY – 20 + ( 1 << 2 ) ) >> 3 ) em que QpY é o QP de bloco atual, xCb, yCb definem a posição do bloco atual na imagem (x, y), pred_mode_flag[ xCb ][ yCb ] define modo de predição do bloco atual, se igual a 0 a predição é inter, de outro modo intra, nCbW, nCbH é a largura e altura do bloco atual de modo correspondente.
18. Método, de acordo com qualquer uma das reivindicações 11 a 13, em que N é dependente de valor de QP.
19. Método, de acordo com qualquer uma das reivindicações 1 a 18, em que geração de LUT é baseada em uma função auxiliar para pelo menos alguns parâmetros de quantização (QPs).
20. Método, de acordo com a reivindicação 19, em que a geração de LUT 𝐿𝑈𝑇(𝑅𝑖 , 𝜎) é derivada por:
𝑅𝑖3 𝐿𝑈𝑇(𝑅𝑖 , 𝜎) = max ( 2 , 𝐴𝑢𝑥𝑖𝑙𝑖𝑎𝑟𝑦𝐹𝑢𝑛𝑐𝜎 (𝑖)), 𝑅𝑖 + 𝑚 ∗ 𝜎 2 em que 𝐴𝑢𝑥𝑖𝑙𝑖𝑎𝑟𝑦𝐹𝑢𝑛𝑐𝜎 (𝑖) representa a função auxiliar, e a função auxiliar tem um valor igual a THR em i que corresponde a um argumento de última LUT + 1.
21. Método, de acordo com a reivindicação 19 ou 20, em que a função auxiliar é uma equação de linha reta proveniente de pontos (i,THR) e (a, 0), em que a > 0 e a depende de parâmetro de filtragem σ ou valor de QP.
22. Método, de acordo com a reivindicação 21, em que a LUT é definida da seguinte maneira setOfLUT[ 5 ][ 16 ] = { 0, 0, 2, 6, 10, 14, 19, 23, 28, 32, 36, 41, 45, 49, 53, 57, }, { 0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115, }, { 0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103, }, { 0, 0, 3, 9, 19, 32, 47, 64, 81, 99, 117, 135, 154, 179, 205, 230, }, { 0, 0, 0, 2, 6, 11, 18, 27, 38, 51, 64, 96, 128, 160, 192, 224, }.
23. Método, de acordo com a reivindicação 21, em que a LUT é definida da seguinte maneira setOfLUT[ 5 ][ 16 ] = { 0, 0, 2, 6, 10, 14, 19, 23, 28, 32, 36, 41, 45, 49, 53, 57, }, { 0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115, }, { 0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103, }, { 0, 0, 0, 1, 3, 5, 9, 14, 19, 25, 32, 40, 55, 73, 91, 110, }, { 0, 0, 0, 0, 0, 1, 2, 4, 6, 8, 11, 14, 26, 51, 77, 102, }.
24. Método, de acordo com a reivindicação 21, em que a LUT é definida da seguinte maneira setOfLUT[ 5 ][ 16 ] = { 0, 2, 10, 19, 28, 36, 45, 53, 61, 70, 78, 86, 94, 102, 110, 118, }, { 0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115, }, { 0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103, }, { 0, 0, 0, 1, 3, 5, 9, 14, 19, 25, 32, 40, 55, 73, 91, 110, }, { 0, 0, 0, 0, 0, 1, 2, 4, 6, 8, 11, 14, 26, 51, 77, 102, }.
25. Método, de acordo com qualquer uma das reivindicações 1 a 24, em que a transformada é uma transformada de Hadamard.
26. Método, de acordo com qualquer uma das reivindicações 1 a 25, em que a transformada é uma transformada 1D.
27. Decodificador compreendendo circuitos de processamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 26.
28. Codificador compreendendo circuitos de processamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 26.
29. Decodificador, compreendendo: um armazenamento de memória que compreende instruções; e um ou mais processadores em comunicação com a memória, em que o um ou mais processadores executam as instruções para realizar o método conforme definido em qualquer uma das reivindicações 1 a 26.
30. Codificador, compreendendo: um armazenamento de memória que compreende instruções; e um ou mais processadores em comunicação com a memória, em que o um ou mais processadores executam as instruções para realizar o método conforme definido em qualquer uma das reivindicações 1 a 26.
31. Produto de programa de computador, compreendendo código de programa para realizar o método conforme definido nas reivindicações 1 a 26 quando executado em um computador ou um processador.
bloco de bloco imagem entrada cálculo residual 104 residual bloco de
Petição 870210007240, de 21/01/2021, pág. 48/73 predição Transformação coeficientes Seleção de Modo 160 (Escala) transformados Estimativa Inter
Quantização Predição saída Inter coeficientes Codificação dados de 1/26 quantizados de Entropia imagem Predição codificados Intra Quantização Inversa coeficientes Estimativa amostras de desquantizados imagem Intra referência decodificada Transformação (Linha) buffer Inversa Buffer de (Escala) imagem Filtro Loop bloco decodificada transformado inverso bloco bloco reconstrução 114 filtrado reconstruído bloco de bloco imagem entrada cálculo residual 104 residual bloco de
Petição 870210007240, de 21/01/2021, pág. 49/73 predição Transformação coeficientes Seleção de Modo 160 (Escala) transformados Estimativa Inter
Quantização Predição saída Inter Filtro coeficientes Codificação dados de 2/26 quantizados de Entropia imagem codificados Predição Intra Quantização Inversa coeficientes amostras de desquantizados Estimativa referência imagem Intra decodificada Transformação (Linha) buffer Inversa (Escala) Buffer de Filtro imagem bloco Loop transformado decodificada inverso bloco bloco reconstrução 114 filtrado reconstruído dados de imagem codificados entrada Decodificação de Entropia
Petição 870210007240, de 21/01/2021, pág. 50/73 coeficientes quantizados
Seleção de Modo 260
Predição imagem Inter bloco de decodificada predição 3/26
Predição Intra Quantização coeficientes Inversa desquantizados amostras de referência (Linha) Transformação Buffer Inversa Buffer de (Escala) Filtro imagem Imagem bloco Decodificada Loop decodificada transformado inverso saída bloco bloco reconstrução 214 filtrado reconstruído dados de imagem codificados entrada Decodificação de Entropia
Petição 870210007240, de 21/01/2021, pág. 51/73 coeficientes quantizados
Seleção de Modo 260
Predição Inter bloco de imagem predição decodificada 4/26
Predição Intra Filtro Quantização coeficientes Inversa desquantizados 264 amostras de referência (Linha) Transformação Buffer Inversa (Escala) Buffer de imagem Imagem Filtro Loop bloco decodificada Decodificada transformado inverso saída bloco bloco reconstrução 214 filtrado reconstruído
Petição 870210007240, de 21/01/2021, pág. 52/73 Transformada de Hadamard
Filtro 5/26
Varredura Transformada de Hadamard inversa
Varredura
Petição 870210007240, de 21/01/2021, pág. 53/73 Transformada de Hadamard
A - pixel atual BCD - pixels vizinhos Filtragem 6/26
Colocar em buffer Transformada de Hadamard inversa de acúmulo
BR112020026959-0A 2018-07-02 2019-07-02 Aparelho e método para filtragem em codificação de vídeo BR112020026959A2 (pt)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US201862693441P 2018-07-02 2018-07-02
US62/693,441 2018-07-02
US201862725845P 2018-08-31 2018-08-31
US62/725,845 2018-08-31
US201862731967P 2018-09-16 2018-09-16
US62/731,967 2018-09-16
US201862731972P 2018-09-17 2018-09-17
US62/731,972 2018-09-17
US201862735722P 2018-09-24 2018-09-24
US62/735,722 2018-09-24
US201862757732P 2018-11-08 2018-11-08
US62/757,732 2018-11-08
US201962793866P 2019-01-17 2019-01-17
US62/793,866 2019-01-17
PCT/RU2019/050101 WO2020009618A1 (en) 2018-07-02 2019-07-02 Apparatus and method for filtering in video coding

Publications (1)

Publication Number Publication Date
BR112020026959A2 true BR112020026959A2 (pt) 2021-03-30

Family

ID=69059729

Family Applications (3)

Application Number Title Priority Date Filing Date
BR112020026959-0A BR112020026959A2 (pt) 2018-07-02 2019-07-02 Aparelho e método para filtragem em codificação de vídeo
BR112020026971-9A BR112020026971A2 (pt) 2018-07-02 2019-07-02 Aparelho e método para filtragem em codificação de vídeo
BR112020026912-3A BR112020026912A2 (pt) 2018-07-02 2019-07-02 Aparelho e método para filtragem em codificação de vídeo

Family Applications After (2)

Application Number Title Priority Date Filing Date
BR112020026971-9A BR112020026971A2 (pt) 2018-07-02 2019-07-02 Aparelho e método para filtragem em codificação de vídeo
BR112020026912-3A BR112020026912A2 (pt) 2018-07-02 2019-07-02 Aparelho e método para filtragem em codificação de vídeo

Country Status (13)

Country Link
US (3) US11706412B2 (pt)
EP (3) EP3808093A4 (pt)
JP (3) JP7195348B2 (pt)
KR (3) KR102598576B1 (pt)
CN (3) CN112369037B (pt)
AU (3) AU2019298855B2 (pt)
BR (3) BR112020026959A2 (pt)
CA (3) CA3105442C (pt)
CL (2) CL2020003453A1 (pt)
MX (3) MX2021000173A (pt)
NZ (1) NZ772208A (pt)
SG (3) SG11202013200WA (pt)
WO (3) WO2020009618A1 (pt)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105872539B (zh) * 2015-02-08 2020-01-14 同济大学 图像编码方法和装置及图像解码方法和装置
CA3105442C (en) 2018-07-02 2023-04-18 Huawei Technologies Co., Ltd. Apparatus and method for filtering in video coding
US20220182634A1 (en) * 2019-03-11 2022-06-09 Vid Scale, Inc. Methods and systems for post-reconstruction filtering
AU2020297260B9 (en) * 2019-06-18 2024-02-01 Huawei Technologies Co., Ltd. Apparatus and method for filtering in video coding
US11743459B2 (en) * 2020-09-29 2023-08-29 Qualcomm Incorporated Filtering process for video coding

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0129558B1 (ko) 1992-10-26 1998-04-10 배순훈 적응적 가변길이 부호화 방법 및 장치
KR100644498B1 (ko) * 1999-08-25 2006-11-10 마츠시타 덴끼 산교 가부시키가이샤 노이즈 검출방법과 노이즈 검출장치 및 화상 복호화장치
AU2002349735B2 (en) * 2001-11-29 2009-01-15 Godo Kaisha Ip Bridge 1 Coding distortion removal method, moving picture coding method, moving picture decoding method, and apparatus for realizing the same, program
US20040252758A1 (en) * 2002-08-14 2004-12-16 Ioannis Katsavounidis Systems and methods for adaptively filtering discrete cosine transform (DCT) coefficients in a video encoder
US7227901B2 (en) * 2002-11-21 2007-06-05 Ub Video Inc. Low-complexity deblocking filter
US7471850B2 (en) * 2004-12-17 2008-12-30 Microsoft Corporation Reversible transform for lossy and lossless 2-D data compression
US20060285590A1 (en) * 2005-06-21 2006-12-21 Docomo Communications Laboratories Usa, Inc. Nonlinear, prediction filter for hybrid video compression
KR100736086B1 (ko) 2005-09-06 2007-07-06 삼성전자주식회사 엔트로피 코딩의 성능 향상 방법 및 장치, 상기 방법을이용한 비디오 코딩 방법 및 장치
US7903733B2 (en) * 2006-01-26 2011-03-08 Qualcomm Incorporated Adaptive filtering to enhance video encoder performance
JP4730552B2 (ja) * 2006-07-14 2011-07-20 富士ゼロックス株式会社 復号化装置及びそのプログラム
US8331448B2 (en) * 2006-12-22 2012-12-11 Qualcomm Incorporated Systems and methods for efficient spatial intra predictabilty determination (or assessment)
EP2192786A1 (en) * 2008-11-27 2010-06-02 Panasonic Corporation Frequency domain filters for video coding
JP5597968B2 (ja) * 2009-07-01 2014-10-01 ソニー株式会社 画像処理装置および方法、プログラム、並びに記録媒体
US20110002386A1 (en) * 2009-07-06 2011-01-06 Mediatek Singapore Pte. Ltd. Video encoder and method for performing intra-prediction and video data compression
JP5700970B2 (ja) * 2009-07-30 2015-04-15 トムソン ライセンシングThomson Licensing 画像シーケンスを表す符号化データストリームの復号方法と画像シーケンスの符号化方法
US8817884B2 (en) * 2009-11-20 2014-08-26 Texas Instruments Incorporated Techniques for perceptual encoding of video frames
JP5464656B2 (ja) * 2010-01-12 2014-04-09 Necカシオモバイルコミュニケーションズ株式会社 画質評価装置、端末装置、画質評価システム、画質評価方法及びプログラム
GB2480224B (en) * 2010-01-29 2014-08-20 Canon Kk Decoding a sequence of digital images with error concealment
CA2785036A1 (en) * 2010-02-05 2011-08-11 Telefonaktiebolaget L M Ericsson (Publ) De-blocking filtering control
KR20110113561A (ko) * 2010-04-09 2011-10-17 한국전자통신연구원 적응적인 필터를 이용한 인트라 예측 부호화/복호화 방법 및 그 장치
SI2950533T1 (sl) * 2010-04-23 2017-05-31 M&K Holdings Inc. Naprava za kodiranje slike
AU2011247331B2 (en) * 2010-04-26 2015-11-26 Sun Patent Trust Filtering mode for intra prediction inferred from statistics of surrounding blocks
TWI543627B (zh) * 2010-07-05 2016-07-21 聯發科技股份有限公司 自適應視頻解碼方法、複雜度自適應視頻解碼器以及自適應音頻/視頻播放系統
US9338449B2 (en) * 2011-03-08 2016-05-10 Qualcomm Incorporated Harmonized scan order for coding transform coefficients in video coding
JP5291133B2 (ja) 2011-03-09 2013-09-18 日本電信電話株式会社 画像処理方法,画像処理装置,映像符号化/復号方法,映像符号化/復号装置およびそれらのプログラム
KR101539312B1 (ko) 2011-05-27 2015-07-24 미디어텍 인크. 비디오 프로세싱에 대한 라인 버퍼 감소를 위한 방법 및 장치
US20130101027A1 (en) * 2011-06-20 2013-04-25 Matthias Narroschke Deblocking control by individual quantization parameters
US20130051467A1 (en) * 2011-08-31 2013-02-28 Apple Inc. Hybrid inter/intra prediction in video coding systems
US8885706B2 (en) * 2011-09-16 2014-11-11 Google Inc. Apparatus and methodology for a video codec system with noise reduction capability
US9525876B2 (en) * 2011-11-04 2016-12-20 Sharp Kabushiki Kaisha Arithmetic decoding device, image decoding device, arithmetic coding device, image coding device, and arithmetic decoding method
KR101462052B1 (ko) * 2011-11-09 2014-11-20 에스케이 텔레콤주식회사 변환을 이용한 주파수 도메인 상의 적응적 루프 필터를 이용한 영상 부호화/복호화 방법 및 장치
EP3614670B1 (en) * 2011-12-15 2021-02-03 Tagivan Ii Llc Signaling of luminance-chrominance coded block flags (cbf) in video coding
AU2012200319B2 (en) * 2012-01-19 2015-11-26 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the significance map for residual coefficients of a transform unit
US9344723B2 (en) * 2012-04-13 2016-05-17 Qualcomm Incorporated Beta offset control for deblocking filters in video coding
US20130343447A1 (en) 2012-06-25 2013-12-26 Broadcom Corporation Adaptive loop filter (ALF) padding in accordance with video coding
KR20220131366A (ko) * 2012-10-01 2022-09-27 지이 비디오 컴프레션, 엘엘씨 베이스 레이어로부터 예측을 위한 서브블록 세부분할의 유도를 이용한 스케일러블 비디오 코딩
US9681128B1 (en) * 2013-01-31 2017-06-13 Google Inc. Adaptive pre-transform scanning patterns for video and image compression
US9264661B2 (en) * 2013-06-07 2016-02-16 Apple Inc. Adaptive post-processing for mobile video calling system
US10972742B2 (en) * 2013-12-19 2021-04-06 Canon Kabushiki Kaisha Encoding process using a palette mode
US10542274B2 (en) * 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
CN105791865B (zh) * 2014-12-22 2020-01-17 江苏省电力公司南京供电公司 帧内预测及去块滤波方法
KR101782156B1 (ko) * 2015-06-11 2017-09-26 인텔렉추얼디스커버리 주식회사 적응적인 디블록킹 필터링을 이용하는 영상 부호화 방법과 영상 복호화 방법 및 장치
EP3340621B1 (en) * 2015-08-20 2023-01-25 Nippon Hoso Kyokai Image decoding device, and programs therefor
US20170155905A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Efficient intra video/image coding using wavelets and variable size transform coding
US20170237939A1 (en) * 2016-02-16 2017-08-17 Google Inc. Loop filtering for multiform transform partitioning
CN109314790A (zh) * 2016-05-23 2019-02-05 佳稳电子有限公司 影像处理方法、利用其的影像解码及编码方法
WO2018097299A1 (ja) * 2016-11-28 2018-05-31 日本放送協会 符号化装置、復号装置、符号化方法、及び復号方法
WO2018117938A1 (en) * 2016-12-23 2018-06-28 Telefonaktiebolaget Lm Ericsson (Publ) Deringing filter for video coding
WO2018117896A1 (en) * 2016-12-23 2018-06-28 Huawei Technologies Co., Ltd Low complexity mixed domain collaborative in-loop filter for lossy video coding
US10523968B2 (en) * 2017-09-18 2019-12-31 Google Llc Coding of last significant coefficient flags
CN114979636B (zh) * 2017-10-09 2023-10-27 佳能株式会社 用于对样本块进行滤波的方法、装置和存储介质
US11432010B2 (en) * 2017-12-19 2022-08-30 Vid Scale, Inc. Face discontinuity filtering for 360-degree video coding
US10986349B2 (en) * 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
US10708592B2 (en) * 2018-04-02 2020-07-07 Qualcomm Incorporated Deblocking filter for video coding and processing
CA3105442C (en) 2018-07-02 2023-04-18 Huawei Technologies Co., Ltd. Apparatus and method for filtering in video coding
US11197025B2 (en) * 2019-06-21 2021-12-07 Qualcomm Incorporated Signaling of matrix intra prediction parameters in video coding

Also Published As

Publication number Publication date
US20210127113A1 (en) 2021-04-29
BR112020026971A2 (pt) 2021-03-30
SG11202013015PA (en) 2021-01-28
CA3105442A1 (en) 2020-01-09
KR102598576B1 (ko) 2023-11-06
JP7195349B2 (ja) 2022-12-23
EP3808092A1 (en) 2021-04-21
CA3105442C (en) 2023-04-18
WO2020009619A1 (en) 2020-01-09
EP3808094A1 (en) 2021-04-21
AU2019298854B2 (en) 2023-02-16
CL2020003453A1 (es) 2021-05-07
NZ772208A (en) 2022-11-25
JP2021530166A (ja) 2021-11-04
JP2021530157A (ja) 2021-11-04
KR20210021580A (ko) 2021-02-26
CN112369037A (zh) 2021-02-12
AU2019298063B2 (en) 2022-10-13
AU2019298855B2 (en) 2022-10-20
JP7293330B2 (ja) 2023-06-19
KR102598746B1 (ko) 2023-11-07
US20210127108A1 (en) 2021-04-29
EP3808094A4 (en) 2021-11-24
CA3105446C (en) 2023-04-11
JP7195348B2 (ja) 2022-12-23
EP3808093A1 (en) 2021-04-21
CN112369036B (zh) 2022-04-22
KR20210021581A (ko) 2021-02-26
KR20210021577A (ko) 2021-02-26
US11805249B2 (en) 2023-10-31
EP3808092A4 (en) 2021-12-01
US11706412B2 (en) 2023-07-18
CL2020003455A1 (es) 2021-07-23
AU2019298063A1 (en) 2021-01-28
CN112806019A (zh) 2021-05-14
JP2021530156A (ja) 2021-11-04
MX2021000172A (es) 2021-03-25
WO2020009618A1 (en) 2020-01-09
MX2021000173A (es) 2021-05-27
SG11202013200WA (en) 2021-01-28
US11509892B2 (en) 2022-11-22
BR112020026912A2 (pt) 2021-03-30
CN112369037B (zh) 2022-04-22
WO2020009617A1 (en) 2020-01-09
CN112806019B (zh) 2022-09-16
KR102598789B1 (ko) 2023-11-07
EP3808093A4 (en) 2021-12-01
CA3105441A1 (en) 2020-01-09
SG11202013198PA (en) 2021-01-28
US20210152821A1 (en) 2021-05-20
AU2019298855A1 (en) 2021-01-28
CN112369036A (zh) 2021-02-12
CA3105446A1 (en) 2020-01-09
AU2019298854A1 (en) 2021-01-28
CA3105441C (en) 2023-06-27
MX2021000170A (es) 2021-03-25

Similar Documents

Publication Publication Date Title
BR112020026959A2 (pt) Aparelho e método para filtragem em codificação de vídeo
US11375187B2 (en) Apparatus and method for filtering in video coding with look-up table selected based on bitstream information
KR20200094071A (ko) 이미지 블록에 관한 픽셀-도메인 전처리 동작들에 기초한 이미지 블록 코딩
RU2781233C2 (ru) Устройство и способ фильтрации при кодировании видео