BR112019015106A2 - Filtros bilaterais em codificação de vídeo com complexidade reduzida - Google Patents

Filtros bilaterais em codificação de vídeo com complexidade reduzida Download PDF

Info

Publication number
BR112019015106A2
BR112019015106A2 BR112019015106-0A BR112019015106A BR112019015106A2 BR 112019015106 A2 BR112019015106 A2 BR 112019015106A2 BR 112019015106 A BR112019015106 A BR 112019015106A BR 112019015106 A2 BR112019015106 A2 BR 112019015106A2
Authority
BR
Brazil
Prior art keywords
block
current block
samples
current
filtered
Prior art date
Application number
BR112019015106-0A
Other languages
English (en)
Inventor
Zhang Li
Chen Jianle
Chien Wei-Jung
Karczewicz Marta
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112019015106A2 publication Critical patent/BR112019015106A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/186Methods 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 colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • 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/436Methods 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 using parallelised computational arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Materials For Photolithography (AREA)

Abstract

um método ilustrativo de filtrar um bloco reconstruído de dados de vídeo inclui obter, por um ou mais processadores, amostras reconstruídas de um bloco atual de dados de vídeo; e seletivamente filtrar bilateralmente, pelo um ou mais processadores, as amostras reconstruídas do bloco atual para gerar um bloco atual filtrado. neste exemplo, seletivamente filtrar bilateralmente as amostras reconstruídas do bloco atual compreende abster-se de filtra bilateralmente pelo menos uma amostra reconstruída do bloco atual de modo que o bloco atual filtrado inclua pelo menos uma amostra não filtrada bilateralmente.

Description

FILTROS BILATERAIS EM CODIFICAÇÃO DE VÍDEO COM COMPLEXIDADE REDUZIDA [001]Este Pedido de Patente reivindica benefício para o Pedido de Patente Provisório U.S. N° 62/451,555 depositado em 27 de janeiro de 2017, cujo conteúdo em sua totalidade é incorporado por referência por este documento.
CAMPO TÉCNICO [002]Esta revelação se relacionada com codificação de vídeo.
ANTECEDENTES [003] As capacidades de vídeo digital podem ser incorporadas a uma ampla variedade de dispositivos, incluindo televisões digitais, sistemas de broadcast digital direto, sistemas de broadcast não cabeados, assistentes digitais pessoais (PDAs), computadores laptop ou de mesa, computadores tablet, leitores de e-books, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos, consoles de jogos, rádio telefones via satélite ou celular, os chamados smartphones, dispositivos de teleconferência por vídeo, dispositivos de fluxo contínuo de vídeo, dentre outros. Os dispositivos de vídeo digital implementam técnicas de compactação de vídeo, tais como estas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITUT H.264 / MPEG-4, Part 10, Advanced Video Coding (AVC), o padrão ITU-T H.265, High Efficiency Video Coding (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital mais eficientemente por implementar tais técnicas de compactação de vídeo.
Petição 870190069676, de 23/07/2019, pág. 7/101
2/71 [004]As Técnicas de compactação de vídeo executam predição espacial (entre imagens) e/ou predição temporal (entre imagens) para reduzir ou remover a redundância inerente às sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fração de vídeo (isto é, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser dividida em blocos de vídeo, os quais também podem ser chamados de blocos de árvore, unidades de codificação (CUs) e/ou nós de codificação. Os Blocos de vídeo em uma fração de codificação intra (I) de uma fração de uma imagem são codificados utilizando a predição espacial em relação às amostras de referência nos blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fração de uma imagem codificada inter (P ou B) podem utilizar a predição espacial em relação a amostras de referência nos blocos vizinhos na mesma imagem ou predição temporal em relação a amostras de referência em outras imagens de referência. A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixels entre o bloco original a ser codificado e o bloco preditivo. Um bloco codificado inter é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais indicando a diferença entre o bloco codificado e o bloco preditivo. Um bloco codificado intra é codificado de acordo com um modo de codificação intra e com os dados residuais. Para compactação adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada, resultando em coeficientes de
Petição 870190069676, de 23/07/2019, pág. 8/101
3/71 transformada residuais, os quais podem ser então quantizados.
SUMÁRIO [005] Em geral, esta revelação descreve técnicas de filtragem que podem ser utilizadas em um estágio de pósprocessamento, como parte da codificação in loop, ou em um estágio de predição de codificação de video. As técnicas de filtragem desta revelação podem ser aplicadas a codecs de video existentes, tais como High Efficiency Video Coding (HEVC), ou ser uma ferramenta de codificação eficiente em quaisquer padrões de codificação de video futuros.
[006]Em um exemplo, um método de filtragem de um bloco reconstruído de dados de video inclui obter, por um ou mais processadores, amostras reconstruídas de um bloco atual dos dados de video; e filtrar seletivamente, por um ou mais processadores, as amostras reconstruídas do bloco atual para gerar um bloco atual filtrado. Neste exemplo, filtrar seletivamente as amostras reconstruídas do bloco atual compreende evitar a filtragem de pelo menos uma amostra reconstruída do bloco atual de modo que o bloco filtrado atual inclua pelo menos uma amostra não filtrada e pelo menos uma amostra filtrada.
[007] Em outro exemplo, um aparelho para filtrar um bloco reconstruído de dados de video inclui uma memória configurada para armazenar dados de video; e um ou mais processadores. Neste exemplo, o um ou mais processadores são configurados para obter amostras reconstruídas de um bloco atual dos dados de video; e filtrar seletivamente as amostras reconstruídas do bloco atual para gerar um bloco atual filtrado. Neste exemplo, para filtrar seletivamente
Petição 870190069676, de 23/07/2019, pág. 9/101
4/71 as amostras reconstruídas do bloco atual, o um ou mais processadores são configurados para evitar a filtragem de pelo menos uma amostra reconstruída do bloco atual, de modo que o bloco filtrado atual inclua pelo menos uma amostra não filtrada e pelo menos uma amostra filtrada.
[008] Em outro exemplo, um aparelho para filtrar um bloco reconstruído de dados de vídeo inclui meio para obter amostras reconstruídas de um bloco atual dos dados de vídeo; e meio para filtrar seletivamente as amostras reconstruídas do bloco atual para gerar um bloco atual filtrado. Neste exemplo, o meio para filtrar seletivamente as amostras reconstruídas do bloco atual é configurado para evitar a filtragem de pelo menos uma amostra reconstruída do bloco atual, de modo que o bloco filtrado atual inclua pelo menos uma amostra não filtrada e pelo menos uma amostra filtrada.
[009] Em outro exemplo, um meio de armazenamento legível por computador armazena instruções que, quando executadas, fazem com que um ou mais processadores de um dispositivo para filtragem de um bloco reconstruído de dados de vídeo obtenham amostras reconstruídas de um bloco atual dos dados de vídeo; e filtrem seletivamente as amostras reconstruídas do bloco atual para gerar um bloco atual filtrado. Neste exemplo, as instruções que fazem com que um ou mais processadores filtrem seletivamente as amostras reconstruídas do bloco atual compreendem instruções que fazem com que um ou mais processadores evitem filtrar pelo menos uma amostra reconstruída do bloco atual, de modo que o bloco filtrado atual inclua pelo menos uma amostra não filtrada e pelo menos uma amostra filtrada.
Petição 870190069676, de 23/07/2019, pág. 10/101
5/71 [0010] Os detalhes de um ou mais aspectos da revelação são expostos nos desenhos anexos e na descrição abaixo. Outras características, objetivos e vantagens das técnicas descritas nesta revelação serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS [0011] A FIG. 1 é um diagrama de blocos ilustrando um sistema ilustrativo de codificação e decodificação de video que pode utilizar uma ou mais técnicas descritas nesta revelação.
[0012] A FIG. 2 é um diagrama de blocos ilustrando um codificador de video ilustrativo que pode implementar as técnicas descritas nesta revelação.
[0013] A FIG. 3 é um diagrama conceituai ilustrando um exemplo tipico da predição intra para um bloco de imagem 16 x 16.
[0014] As FIGs. 4A e 4B são diagramas conceituais ilustrando exemplos dos modos de predição Intra.
[0015] As FIGs. 5A até 5D ilustram, cada uma, um padrão direcional 1-D para a classificação de amostra de Deslocamento de Borda.
[0016] A FIG. 6 é um diagrama conceituai ilustrando um bloco atual que inclui uma amostra atual e amostras vizinhas utilizadas no processo de filtragem bilateral da amostra atual.
[0017] A FIG. 7 é um diagrama conceituai ilustrando como amostras vizinhas dentro de uma TU atual (por exemplo, uma TU 4 x 4) podem ser utilizadas para filtrar uma amostra atual.
Petição 870190069676, de 23/07/2019, pág. 11/101
6/71 [0018] A FIG. 8 é um diagrama conceituai ilustrando um exemplo de como as amostras podem ser categorizadas, de acordo com uma ou mais técnicas da presente revelação.
[0019] A FIG. 9 é um diagrama de blocos ilustrando um decodificador de vídeo ilustrativo que pode implementar uma ou mais técnicas descritas nesta revelação.
[0020] A FIG. 10 é um fluxograma ilustrando um processo ilustrativo para filtrar um bloco reconstruído de dados de vídeo, de acordo com uma ou mais técnicas desta revelação.
DESCRIÇÃO DETALHADA [0021] Os codificadores de vídeo (por exemplo, codificadores de vídeo e decodificadores de vídeo) podem executar várias operações de filtragem em dados de vídeo. Por exemplo, para preservar bordas e reduzir ruídos, um decodificador de vídeo pode executar filtragem bilateral em uma amostra de dados de vídeo, por substituir a amostra por uma média ponderada de si mesma e de seus vizinhos.
[0022] Pode ser geralmente desejável que um codificador de vídeo seja capaz de processar vários blocos de dados de vídeo em paralelo. Por exemplo, um decodificador de vídeo pode reconstruir e filtrar as amostras de vários blocos de dados de vídeo ao mesmo tempo. Por processar vários blocos de dados de vídeo em paralelo, um codificador de vídeo pode reduzir a quantidade de tempo necessária para decodificar imagens de dados de vídeo. Entretanto, em alguns casos, pode não ser possível processar alguns blocos de dados de vídeo em paralelo. Por exemplo, se a decodificação e/ou a reconstrução de amostras
Petição 870190069676, de 23/07/2019, pág. 12/101
7/71 de um bloco atual depende de amostras filtradas de um bloco vizinho, ele pode diminuir a produtividade, já que a decodificação e/ou reconstrução de amostras do bloco atual precisa esperar até o processo de filtragem do bloco vizinho esteja terminado.
[0023] De acordo com uma ou mais técnicas desta revelação, um codificador de video pode seletivamente filtrar amostras de um bloco atual de modo que a filtragem não impeça o processamento paralelo de blocos vizinhos. Por exemplo, um decodificador de video pode filtrar bilateralmente amostras de um bloco atual que podem não ser utilizadas por blocos vizinhos para predição Intra e abster-se de filtrar bilateralmente amostras de um bloco atual que podem ser utilizadas por blocos vizinhos para predição Intra. Desta forma, um codificador de video ainda pode obter alguns dos benefícios da filtragem enquanto ainda sendo capaz de processar blocos vizinhos em paralelo.
[0024] A FIG. 1 é um diagrama de blocos ilustrando um sistema de codificação e de decodificação de video ilustrativo 10 que pode utilizar técnicas desta revelação. Como apresentado na FIG. 1, o sistema 10 inclui um dispositivo fonte 12 que proporciona dados de video codificados para serem decodificados mais tarde por um dispositivo destino 14. Em particular, o dispositivo fonte 12 proporciona os dados de video para o dispositivo destino 14 através de um meio legível por computador. O dispositivo fonte 12 e o dispositivo destino 14 podem compreender qualquer um de uma variedade de dispositivos, incluindo computadores de mesa, computadores notebook (isto é, laptop), computadores tablet, decodificadores de sinais,
Petição 870190069676, de 23/07/2019, pág. 13/101
8/71 monofones telefones tais como os chamados smartphones, computadores tablet, televisões, câmeras, dispositivos de vídeo, reprodutores de mídia digital, consoles de jogos, dispositivos de fluxo contínuo de vídeo, dentre outros. Em alguns casos, o dispositivo fonte 12 e o dispositivo destino 14 podem ser equipados para comunicação não cabeada. Assim, o dispositivo fonte 12 e o dispositivo destino 14 podem ser dispositivos de comunicação não cabeada. 0 dispositivo fonte 12 é um dispositivo de codificação de vídeo ilustrativo (isto é, um dispositivo para codificar dados de vídeo). 0 dispositivo destino 14 é um dispositivo de decodificação de vídeo ilustrativo (isto é, um dispositivo para decodificar dados de vídeo).
[0025] No exemplo da FIG. 1, o dispositivo fonte 12 inclui uma fonte de vídeo 18, a mídia de armazenamento 19 configurada para armazenar dados de vídeo, um codificador de vídeo 20 e uma interface de saída 22. O dispositivo destino 14 inclui uma interface de entrada 26, uma mídia de armazenamento 28 configurada para armazenar dados de vídeo codificados, um decodificador de vídeo 30 e dispositivo de vídeo 32. Em outros exemplos, o dispositivo fonte 12 e o dispositivo destino 14 incluem outros componentes ou disposições. Por exemplo, o dispositivo fonte 12 pode receber dados de vídeo a partir de uma fonte de vídeo externa, tal como uma câmera externa. Da mesma forma, o dispositivo destino 14 pode executar interface com um dispositivo de vídeo externo, ao invés de incluir um dispositivo de vídeo integrado.
[0026] O sistema ilustrado 10 da FIG. 1 é meramente um exemplo. As técnicas para o processar dados
Petição 870190069676, de 23/07/2019, pág. 14/101
9/71 de vídeo podem ser executadas por qualquer dispositivo de codificação e/ou de decodificação de vídeo digital. Embora geralmente as técnicas desta revelação sejam executadas por um dispositivo de codificação de vídeo, as técnicas também podem ser executadas por um codificador / decodificador de vídeo, tipicamente referido como um CODEC. 0 dispositivo fonte 12 e o dispositivo destino 14 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo fonte 12 gera dados de vídeo codificados para transmissão para o dispositivo destino 14. Em alguns exemplos, o dispositivo fonte 12 e o dispositivo destino 14 podem operar de uma maneira substancialmente simétrica de modo que cada dispositivo fonte 12 e dispositivo destino 14 inclua componentes de codificação e de decodificação de vídeo. Assim, o sistema 10 pode suportar a transmissão de vídeo unidirecional ou bidirecional entre o dispositivo fonte 12 e o dispositivo destino 14, por exemplo, para fluxo contínuo de vídeo, reprodução de vídeo, broadcasting de vídeo ou telefonia de vídeo.
[0027] A fonte de vídeo 18 do dispositivo fonte 12 pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo capturado anteriormente e/ou uma interface de alimentação de vídeo para receber dados de vídeo a partir de um provedor de conteúdo de vídeo. Como uma alternativa adicional, a fonte de vídeo 18 pode gerar dados baseados em computação gráfica como o vídeo fonte, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. O dispositivo fonte 12 pode compreender uma ou mais mídias de armazenamento de dados (por exemplo, mídia
Petição 870190069676, de 23/07/2019, pág. 15/101
10/71 de armazenamento 19) configuradas para armazenar os dados de vídeo. As técnicas descritas nesta revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas às aplicações não cabeadas e/ou cabeadas. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. A interface de saída 22 pode emitir a informação de vídeo codificado para um meio legível por computador 16.
[0028] A interface de saída 22 pode compreender vários tipos de componentes ou dispositivos. Por exemplo, a interface de saída 22 pode compreender um transmissor não cabeado, um modem, um componente de rede cabeada (por exemplo, uma placa Ethernet) ou outro componente físico. Nos exemplos onde a interface de saída 22 compreende um receptor não cabeado, a interface de saída 22 pode ser configurada para receber dados, como o fluxo de bits, modulado de acordo com um padrão de comunicação celular, como 4G, 4G-LTE, LTE Avançada, 5G, dentre outros. Em alguns exemplos onde a interface de saída 22 compreende um receptor não cabeado, a interface de saída 22 pode ser configurada para receber dados, tal como o fluxo de bits, modulados de acordo com outros padrões não cabeados, tal como uma especificação IEEE 802.11, uma especificação IEEE 802.15 (por exemplo, ZigBee™) , um padrão Bluetooth™, dentre outros. Em alguns exemplos, o sistema de circuitos da interface de saída 22 pode ser integrados no sistema de circuitos do codificador de vídeo 20 e/ou em outros componentes do dispositivo fonte 12. Por exemplo, o codificador de vídeo 20 e a interface de saída 22 podem ser partes de um sistema em um chip (SoC) . O SoC também pode
Petição 870190069676, de 23/07/2019, pág. 16/101
11/71 incluir outros componentes, tais como um microprocessador de propósito geral, uma unidade de processamento gráfico e assim por diante.
[0029] O dispositivo destino 14 pode receber os dados de vídeo codificados para serem decodificados via o meio legível por computador 16. O meio legível por computador 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados a partir do dispositivo fonte 12 para o dispositivo destino 14. Em alguns exemplos, o meio legível por computador 16 compreende um meio de comunicação para permitir que o dispositivo fonte 12 transmita dados de vídeo codificados diretamente para o dispositivo destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação não cabeada, e transmitidos para o dispositivo destino 14. O meio de comunicação pode compreender qualquer meio de comunicação não cabeada ou cabeada, como um espectro de radiofrequência (RF) ou um ou mais linhas físicas de transmissão. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de longa distância ou uma rede global, tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação a partir do dispositivo fonte 12 para o dispositivo destino 14. O dispositivo destino 14 pode compreender uma ou mais mídias de armazenamento de dados configuradas para armazenar dados de vídeo codificados e dados de vídeo decodificados.
Petição 870190069676, de 23/07/2019, pág. 17/101
12/71 [0030] Em alguns exemplos, os dados codificados podem ser emitidos a partir da interface de saida 22 para um dispositivo de armazenamento. Da mesma forma, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer um de uma variedade de mídias de armazenamento de dados distribuídas ou acessadas localmente, como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou qualquer outra mídia de armazenamento digital adequada para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou a outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo fonte 12. O dispositivo destino 14 pode acessar os dados de vídeo armazenados do dispositivo de armazenamento via fluxo contínuo ou transferência. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo destino 14. Servidores de arquivos ilustrativos incluem um servidor de web (por exemplo, para um site da rede) , um servidor FTP, dispositivos de armazenamento conectado à rede (NAS) ou uma unidade de disco local. O dispositivo destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal não cabeado (por exemplo, uma conexão Wi-Fi), uma conexão cabeada (por exemplo, DSL, modem a cabo, etc.) ou uma
Petição 870190069676, de 23/07/2019, pág. 18/101
13/71 combinação de ambos que é adequada para acessar dados de video codificados armazenados em um servidor de arquivos. A transmissão de dados de video codificados a partir do dispositivo de armazenamento pode ser uma transmissão de fluxo continuo, uma transmissão de transferência ou uma combinação das mesmas.
[0031] As técnicas podem ser aplicadas para codificação de video em suporte a qualquer uma dentre uma variedade de aplicações de multimídia, tais como broadcasts de televisão por via aérea, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões de video de fluxo continuo na Internet, tal como fluxo continuo adaptativo dinâmico através de HTTP (DASH), video digital que é codificado em um meio de armazenamento de dados, decodificação de video digital armazenado em um meio de armazenamento de dados ou outras aplicações. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de video unidirecional ou bidirecional para suportar aplicações como fluxo continuo de video, reprodução de video, broadcasting de video e/ou telefonia de video.
[0032] O meio legivel por computador 16 pode incluir midia temporária, tal como um broadcast não cabeado ou uma transmissão de rede cabeada, ou midia de armazenamento (ou seja, midia de armazenamento não temporária), tal como disco rigido, unidade flash, disco compacto, disco de video digital, discos Blu-ray ou outras midias legiveis por computador. Em alguns exemplos, um servidor de rede (não apresentado) pode receber dados de video codificados a partir do dispositivo fonte 12 e
Petição 870190069676, de 23/07/2019, pág. 19/101
14/71 proporcionar os dados de vídeo codificados para o dispositivo destino 14, por exemplo, via transmissão de rede. Similarmente, um dispositivo de computação de uma instalação de produção de meio, tal como uma instalação de estampagem de disco, pode receber dados de vídeo codificados a partir do dispositivo fonte 12 e produzir um disco contendo os dados de vídeo codificados. Portanto, pode ser entendido que o meio legível por computador 16 inclui uma ou mais mídias legíveis por computador de várias formas, em vários exemplos.
[0033] A interface de entrada 26 do dispositivo destino 14 recebe informação de um meio legível por computador 16. A informação do meio legível por computador 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20 do codificador de vídeo 20, a qual também é utilizada pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas, por exemplo, grupos de imagens (GOPs). A interface de entrada 26 pode compreender vários tipos de componentes ou dispositivos. Por exemplo, a interface de entrada 26 pode compreender um receptor não cabeado, um modem, um componente de rede cabeada (por exemplo, uma placa Ethernet) ou outro componente físico. Nos exemplos onde a interface de entrada 26 compreende um receptor não cabeado, a interface de entrada 26 pode ser configurada para receber dados, como o fluxo de bits, modulados de acordo com um padrão de comunicação celular, tal como 4G, 4G-LTE, LTE Avançada, 5G, dentre outros. Em alguns exemplos onde a interface de entrada 26 compreende um receptor não cabeado,
Petição 870190069676, de 23/07/2019, pág. 20/101
15/71 a interface de entrada 26 pode ser configurada para receber dados, tal como o fluxo de bits, modulado de acordo com outros padrões não cabeados, tal como uma especificação IEEE 802.11, uma especificação IEEE 802.15 (por exemplo, ZigBee™) , um padrão Bluetooth™, dentre outros. Em alguns exemplos, o sistema de circuitos da interface de entrada 26 pode ser integrado no sistema de circuitos do decodificador de video 30 e/ou em outros componentes do dispositivo destino 14. Por exemplo, o decodificador de video 30 e a interface de entrada 26 podem ser partes de um SoC. O SoC também pode incluir outros componentes, tais como um microprocessador de propósito geral, uma unidade de processamento gráfico e assim por diante.
[0034] A midia de armazenamento 28 pode ser configurada para armazenar dados de video codificados, tais como dados de video codificados (por exemplo, um fluxo de bits) recebidos pela interface de entrada 26. O dispositivo de video 32 exibe os dados de video decodificados para um usuário e pode compreender qualquer um de uma variedade de dispositivos de video, como um tubo de raios catódicos (CRT), um video de cristal liquido
(LCD), um video de plasma, um video de diodo orgânico
emissor de luz (OLED) ou outro tipo de dispositivo de
video. [0035] 0 codificador de video 20 e a unidade
decodificadora de video 30 podem ser cada um, implementados como qualquer um dos vários sistemas de circuitos do codificador adequados, tais como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação especifica (ASICs),
Petição 870190069676, de 23/07/2019, pág. 21/101
16/71 arranjos de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio não temporário legível por computador adequado e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta revelação. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador / decodificador combinado (CODEC) em um respectivo dispositivo.
[0036] Em alguns exemplos, o codificador de vídeo 20 e o decodif icador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo, tal como um padrão existente ou futuro. Padrões de codificação de vídeo ilustrativos incluem, mas não estão limitados a, ITUT H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo as extensões de Scalable Video Coding (SVC) e Multi-View Video Coding (MVC). Adicionalmente, um novo padrão de codificação de vídeo, denominado High Efficiency Video Coding (HEVC) ou ITU-T Η.265, incluindo suas variações e extensões de codificação de conteúdo de tela, codificação de vídeo 3D (3D-HEVC) e extensões de multivisualização (MVHEVC) e extensão escalável (SHVC), foram desenvolvidas pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC), bem como pela Equipe de Colaboração Conjunta no
Petição 870190069676, de 23/07/2019, pág. 22/101
17/71
Desenvolvimento de Extensão de Codificação de Video 3D (JCT-3V) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e do Grupo de Especialistas em Imagem em Movimento (MPEG) ISO/IEC. Ye-Kui Wang et al., High Efficiency Video Coding (HEVC) Defect Report, Joint Collaborative Team on Video Coding(JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting, Vienna, AT, 25 July - 2 Aug 2013, documento JCTVC-N1003_vl, é uma especificação HEVC preliminar.
[0037] 0 ITU-T VCEG (q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG) estão agora estudando a necessidade potencial de padronização de tecnologia de codificação de vídeo futura com uma capacidade de compactação que de forma significativa exceda esta do padrão HEVC atual (incluindo suas extensões atuais e extensões de curto prazo para codificação de conteúdo de tela e codificação de alto alcance dinâmico). Os grupos estão trabalhando juntos nesta atividade de exploração em um esforço de colaboração conjunta conhecido como Equipe Conjunta de Exploração de Vídeo (JVET) para avaliar os projetos de tecnologia de comparação propostos por seus especialistas nesta área. O JVET primeiro se encontrou durante 19 a 21 de outubro de 2015. Juale Chem et al., Algorithm Descrition of Joint Exploration Test Model 3, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 3rd Meeting, Geneva, CH, 2 6 May - 1 June 2016, documento JVET-1001, é uma descrição de algoritmo do Joint Exploration Test Model 3 (JEM3).
[0038] No HEVC e em outras especificações de codificação de video, os dados de vídeo incluem várias
Petição 870190069676, de 23/07/2019, pág. 23/101
18/71 imagens. As imagens também podem ser referidas como quadros. Uma imagem pode incluir um ou mais arranjos de amostras. Cada arranjo de amostras respectivo de uma imagem pode compreender um arranjo de amostras para um componente de cor respectivo. Em HEVC, uma imagem pode incluir três arranjos de amostras, denotados Sl, Set e Scr. Sl é um arranjo bidimensional (isto é, um bloco) de amostras de luma. Scb é um arranjo bidimensional de amostras de croma Cb. Scr é um arranjo bidimensional de amostras de croma Cr. Em outros casos, uma imagem pode ser monocromática e pode incluir somente um arranjo de amostras de luma.
[0039] Como parte da codificação de dados de vídeo, o codificador de vídeo 20 pode codificar imagens dos dados de vídeo. Em outras palavras, o codificador de vídeo 20 pode gerar representações codificadas das imagens dos dados de vídeo. Uma representação codificada de uma imagem pode ser referida neste documento como uma imagem codificada ou uma imagem codificada por criptografia.
[0040] Para gerar uma representação codificado de uma imagem, o codificador de vídeo 20 pode codificar blocos da imagem. O codificador de vídeo 20 pode incluir, em um fluxo de bits, uma representação codificado do bloco de vídeo. Por exemplo, para gerar uma representação codificado de uma imagem, o codificador de vídeo 20 pode dividir em partes cada arranjo de amostras da imagem em três blocos de árvore (CTBs) e codificar CTBs. Um CTB pode ser um bloco de amostras N x N em um arranjo de amostras de uma imagem. No perfil principal HEVC, o tamanho de um CTB pode variar de 16x16 a 64x64, embora tecnicamente os
Petição 870190069676, de 23/07/2019, pág. 24/101
19/71 tamanhos CTB de 8x8 possam ser suportados.
[0041] Uma unidade de árvore de codificação (CTU) de uma imagem pode compreender uma ou mais CTBs e pode compreender estruturas de sintaxe utilizadas para codificar as amostras de uma ou mais CTBs. Por exemplo, cada uma CTU pode compreender um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma e estruturas de sintaxe utilizadas para codificar as amostras dos CTBs. Em imagens monocromáticas ou imagens possuindo três planos de cores separados, uma CTU pode compreender estruturas de um único CTB e estruturas de sintaxe utilizadas para codificar as amostras do CTB. Uma CTU também pode ser referida como um bloco de árvore ou uma maior unidade de codificação (LCU). Nesta revelação, uma estrutura de sintaxe pode ser definida como zero ou mais elementos de sintaxe presentes juntos em um fluxo de bits em uma ordem especificada. Em alguns codecs, uma imagem codificado é uma representação codificado contendo todas as CTUs da imagem.
[0042] Para codificar uma CTU de uma imagem, o codificador de vídeo 20 pode dividir os CTBs da CTU em um ou mais blocos de codificação. Um bloco de codificação é um bloco de amostras N x N. Em alguns codecs, para codificar uma CTU de uma imagem, o codificador de vídeo 20 pode recursivamente executar divisão por transformada quadtree em relação aos blocos de árvore de codificação de uma CTU para dividir em partes os CTBs em blocos de codificação, daí o nome unidades de árvore de codificação. Uma unidade de codificação (CU) pode compreender um ou mais blocos de codificação e estruturas
Petição 870190069676, de 23/07/2019, pág. 25/101
20/71 de sintaxe utilizadas para codificar amostras de um ou mais blocos de codificação. Por exemplo, uma CU pode incluir um bloco de codificação de amostras luma e dois blocos de codificação correspondentes de amostras croma de uma imagem que possui um arranjo de amostras luma, um arranjo de amostras Cb e um arranjo de amostras Cr, e as estruturas de sintaxe utilizadas para codificar as amostras dos blocos de codificação. Em imagens monocromáticas ou imagens possuindo três planos de cor separados, uma CU pode compreender um único bloco de codificação e estruturas de sintaxe utilizadas para codificar as amostras do bloco de codificação.
[0043] Adicionalmente, o codificador de vídeo 20 pode codificar as CUs de uma imagem dos dados de vídeo. Em alguns codecs, como parte da codificação de uma CU, o codificador de vídeo 20 pode dividir em partes um bloco de codificação da CU em um ou mais blocos de predição. Um bloco de predição é um bloco retangular (isto é, quadrados ou não quadrados) de amostras no qual a mesma predição é aplicada. Uma unidade de predição (PU) de uma CU pode compreender um ou mais blocos de predição de uma CU e estruturas de sintaxe utilizadas para predizer o um ou mais blocos de predição. Por exemplo, uma PU pode compreender um bloco de predição de amostras luma, dois blocos de predição correspondentes de amostras croma e estruturas de sintaxe utilizadas para predizer os blocos de predição. Em imagens monocromáticas ou imagens possuindo três planos de cores separados, uma PU pode incluir um único bloco de predição e estruturas de sintaxe utilizadas para predizer o bloco de predição.
Petição 870190069676, de 23/07/2019, pág. 26/101
21/71 [0044] O codificador de video 20 pode gerar um bloco preditivo (por exemplo, um bloco preditivo luma, Cb e Cr) para um bloco de predição (por exemplo, bloco preditivo luma, Cb e Cr) de uma CU. O codificador de vídeo 20 pode utilizar predição intra ou predição inter para gerar um bloco preditivo. Se o codificador de vídeo 20 utiliza predição intra para gerar um bloco preditivo, o codificador de vídeo 20 pode gerar o bloco preditivo baseado em amostras decodificadas da imagem que inclui a CU. Se o codificador de vídeo 20 utiliza predição inter para gerar um bloco preditivo de uma CU de uma imagem atual, o codificador de vídeo 20 pode gerar o bloco preditivo da CU baseado em amostras decodificadas de uma imagem de referência (isto uma imagem diferente da imagem atual).
[0045] O codificador de vídeo 20 pode gerar um ou mais blocos residuais para a CU. Por exemplo, o codificador de vídeo 20 pode gerar um bloco residual luma para a CU. Cada amostra no bloco residual luma da CU indica uma diferença entre uma amostra luma em um dos blocos luma preditivos da CU e uma amostra correspondente no bloco de codificação luma original da CU. Adicionalmente, o codificador de vídeo 20 pode gerar um bloco residual Cb para a CU. Cada amostra no bloco residual Cb de uma CU pode indicar uma diferença entre uma amostra Cb em um dos blocos Cb preditivos da CU e uma amostra correspondente no bloco de codificação Cb original da CU. O codificador de vídeo 20 também pode gerar um bloco residual Cr para a CU. Cada amostra no bloco residual Cr da CU pode indicar uma diferença entre uma amostra Cr em um dos blocos Cr preditivos da CU e uma
Petição 870190069676, de 23/07/2019, pág. 27/101
22/71 amostra correspondente no bloco de codificação Cr original da CU.
[0046] Adicionalmente, o codificador de vídeo 20 pode decompor os blocos residuais de uma CU em um ou mais blocos de transformada. Por exemplo, o codificador de vídeo 20 pode utilizar a divisão por transformada quad-tree para decompor os blocos residuais de uma CU em um ou mais blocos de transformada. Um bloco de transformada é um bloco retangular (por exemplo, quadrado ou não quadrado) de amostras no qual a mesma transformada é aplicada. Uma unidade de transformada (TU) de uma CU pode compreender um ou mais blocos de transformada. Por exemplo, uma TU pode compreender um bloco de transformada de amostras luma, dois blocos de transformada correspondentes de amostras croma e estruturas de sintaxe utilizadas para transformar as amostras de bloco de transformada. Assim, cada TU de uma CU pode possuir um bloco de transformada luma, um bloco de transformada Cb e um bloco de transformada Cr. O bloco de transformada luma da TU pode ser um sub-bloco do bloco residual luma da CU. O bloco de transformada Cb pode ser um sub-bloco do bloco residual Cb da CU. O bloco de transformada Cr pode ser um sub-bloco do bloco residual Cr da CU. Em imagens monocromáticas ou imagens com três planos de cores separados, uma TU pode compreender um único bloco de transformada e estruturas de sintaxe utilizadas para transformar as amostras do bloco de transformada.
[0047] O codificador de vídeo 20 pode aplicar uma ou mais transformações em um bloco de transformada de uma TU para gerar um bloco de coeficientes para a TU. Um bloco de coeficientes pode ser um arranjo bidimensional de
Petição 870190069676, de 23/07/2019, pág. 28/101
23/71 coeficientes de transformada. Um coeficiente de transformada pode ser uma grandeza escalar. Em alguns exemplos, a uma ou mais transformações convertem o bloco de transformada a partir de um dominio de pixel para um dominio de frequência. Assim, em tais exemplos, um coeficiente de transformada pode ser uma grandeza escalar considerada como estando em um dominio de frequência. Um nivel de coeficiente de transformada é uma quantidade inteira representando um valor associado a um indice de frequência bidimensional especifico em um processo de decodificação antes do escalonamento para cálculo de um valor de coeficiente de transformada.
[0048] Em alguns exemplos, o codificador de video 20 salta a aplicação das transformadas para o bloco de transformada. Em tais exemplos, o codificador de video 20 pode tratar os valores de amostras residuais, que podem ser tratados da mesma maneira que os coeficientes de transformada. Assim, em exemplos onde o codificador de video 20 salta a aplicação das transformadas, a discussão seguinte dos coeficientes de transformada e dos blocos coeficientes pode ser aplicável para os blocos de transformadas de amostras residuais.
[0049] Após gerar um bloco de coeficientes, o codificador de video 20 pode quantizar o bloco de coeficientes. A quantização geralmente refere-se a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizados para representar os coeficientes de transformada, proporcionando compactação adicional. Em alguns exemplos, o codificador de video 20 salta a
Petição 870190069676, de 23/07/2019, pág. 29/101
24/71 quantização. Após o codificador de video 20 quantizar um bloco de coeficientes, o codificador de video 20 pode gerar elementos de sintaxe indicando os coeficientes de transformada quantizados. O codificador de video 20 pode codificar por entropia um ou mais dos elementos de sintaxe indicando os coeficientes de transformada quantizados. Por exemplo, o codificador de video 20 pode executar Codificação Aritmética Binária Adaptativa ao Contexto (CABAC) nos elementos de sintaxe indicando os coeficientes de transformada quantizados. Assim, um bloco codificado (por exemplo, uma CU codificado) pode incluir os elementos de sintaxe codificados por entropia que indicam os coeficientes de transformada quantizados.
[0050] O codificador de vídeo 20 pode produzir um fluxo de bits que inclui dados de vídeo codificados. Em outras palavras, o codificador de vídeo 20 pode emitir um fluxo de bits que inclui uma representação codificado de dados de vídeo. Por exemplo, o fluxo de bits pode compreender uma sequência de bits que formam uma representação de imagens codificadas dos dados de vídeo e dos dados associados. Em alguns exemplos, uma representação de uma imagem codificada pode incluir representações codificadas de blocos.
[0051] O fluxo de bits pode compreender uma sequência de unidades de camada de abstração de rede (NAL). Uma unidade NAL é uma estrutura de sintaxe contendo uma indicação do tipo de dados na unidade NAL e os bytes contendo esses dados na forma de uma carga útil bruta de sequência de bytes (RBSP) intercalada conforme necessário com bits de prevenção de emulação. Cada uma das unidades
Petição 870190069676, de 23/07/2019, pág. 30/101
25/71
NAL pode incluir um cabeçalho de unidade NAL e encapsular uma RBSP. 0 cabeçalho da unidade NAL pode incluir um elemento de sintaxe indicando um código de tipo de unidade NAL. 0 código do tipo de unidade NAL especificado pelo cabeçalho de unidade NAL de uma unidade NAL indica o tipo de unidade NAL. Uma RBSP pode ser uma estrutura de sintaxe contendo um número inteiro de bytes que são encapsulados em uma unidade NAL. Em alguns casos, uma RBSP inclui zero bits .
[0052] Unidades NAL podem encapsular RBSPs para conjuntos de parâmetros de video (VPSs) , conjuntos de parâmetros de sequência (SPSs) e conjuntos de parâmetros de imagem (PPSs) . Um VPS é uma estrutura de sintaxe que compreende elementos de sintaxe que se aplicam a zero ou mais sequências de videos codificadas inteiras (CVSs). Um SPS também é uma estrutura de sintaxe que compreende elementos de sintaxe que se aplicam a zero ou mais CVSs inteiros. Um SPS pode incluir um elemento de sintaxe que identifica um VPS que está ativo quando o SPS está ativo. Assim, os elementos de sintaxe de um VPS podem ser mais geralmente aplicáveis do que os elementos de sintaxe de um SPS. Um PPS é uma estrutura de sintaxe compreendendo elementos de sintaxe que se aplicam a zero ou mais imagens codificadas. Um PPS pode incluir um elemento de sintaxe que identifica um SPS que está ativo quando o PPS está ativo. Um cabeçalho de fração de uma fração pode incluir um elemento de sintaxe que indica um PPS que está ativo quando a fração está sendo codificada.
[0053] O decodificador de vídeo 30 pode receber um fluxo de bits gerado pelo codificador de vídeo
Petição 870190069676, de 23/07/2019, pág. 31/101
26/71
20. Como referido acima, o fluxo de bits pode compreender uma representação codificada de dados de video. O decodificador de video 30 pode decodificar o fluxo de bits para reconstruir as imagens dos dados de video. Como parte da decodificação do fluxo de bits, o decodificador de video 30 pode analisar o fluxo de bits para obter elementos de sintaxe a partir do fluxo de bits. O decodificador de video 30 pode reconstruir imagens dos dados de video baseado, pelo menos em parte, nos elementos de sintaxe obtidos a partir do fluxo de bits. O processo para reconstruir imagens dos dados de video pode ser geralmente reciproco ao processo executado pelo codificador de video 20 para codificar as imagens. Por exemplo, o decodificador de video 30 pode utilizar a predição inter ou a predição intra para gerar um ou mais blocos preditivos para cada PU da CU atual, pode utilizar vetores de movimento das PUs para determinar blocos preditivos para as PUs de uma CU atual. Adicionalmente, o decodificador de video 30 pode inverter a quantificação de blocos coeficientes das TUs da CU atual. O decodificador de video 30 pode executar transformadas inversas nos blocos coeficientes para reconstruir blocos de transformada das TU da CU atual. Em alguns exemplos, o decodificador de video 30 pode reconstruir os blocos de codificação da CU atual por adicionar as amostras dos blocos preditivos para as PUs da CU atual para as amostras decodificadas correspondentes dos blocos de transformada das TUs da CU atual. Ao reconstruir os blocos de codificação para cada CU de uma imagem, o decodificador de video 30 pode reconstruir a imagem.
[0054] Uma fração de uma imagem pode incluir
Petição 870190069676, de 23/07/2019, pág. 32/101
27/71 um número inteiro de CTUs da imagem. As CTUs de uma fração podem ser ordenadas consecutivamente em uma ordem de varredura, tal como uma ordem de varredura por rastreio. Na HEVC, uma fração é definida como um número inteiro de CTUs contidas em um segmento de fração independente e em todos os segmentos de fração dependentes subsequentes (se houver) que precedem o próximo segmento de fração independente (se houver) dentro da mesma unidade de acesso. Adicionalmente, na HEVC, um segmento de fração é definido como um número inteiro de unidades de árvore de codificação ordenadas consecutivamente na varredura de azulejo e contidas em uma única unidade NAL. Uma varredura de azulejos é uma ordenação sequencial específica de CTBs que dividem em partes uma imagem na qual os CTBs são ordenados consecutivamente em varredura por rastreio de CTB um azulejo, enquanto que os azulejos em uma imagem são ordenados consecutivamente em uma varredura por rastreio de azulejos da imagem. Conforme definido na HEVC e potencialmente em outros codecs, um azulejo é uma região retangular de CTBs dentro de uma coluna de azulejos específica e de uma linha de azulejos específica em uma imagem. Outras definições de azulejos podem se aplicar a tipos de blocos diferentes de CTBs.
[0055] O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem executar várias operações de filtragem em dados de vídeo. Por exemplo, como discutido em maiores detalhes abaixo, o decodificador de vídeo 30 pode executar a filtragem bilateral em uma amostra de dados de vídeo, substituindo a amostra por uma média ponderada de si mesma e de seus vizinhos. Entretanto,
Petição 870190069676, de 23/07/2019, pág. 33/101
28/71 executar filtragem bilateral em amostras de um bloco atual pode reduzir o rendimento do decodificador de video 30,
devido à reconstrução de amostras de blocos vizinhos do
bloco atual pode depender de amostras não filtradas do
bloco atual.
[0056] De acordo com uma ou mais técnicas
desta revelação, o codificador de vídeo 20 e o
decodificador de vídeo 30 podem filtrar seletivamente
amostras de um bloco atual de modo que a filtragem não impeça o processamento paralelo de blocos vizinhos. Por exemplo, o decodificador de vídeo 30 pode filtrar bilateralmente as amostras de um bloco atual que pode ser utilizado por blocos vizinhos para predição intra e absterse de filtrar bilateralmente amostras de um bloco atual que podem não ser utilizadas por blocos vizinhos para predição intra. Desta maneira, o decodificador de vídeo 20 e o decodificador de vídeo 30 ainda podem obter alguns dos benefícios da filtragem enquanto ainda sendo capazes de processar blocos vizinhos em paralelo.
[0057] A FIG. 2 é um diagrama de blocos ilustrando um codificador de vídeo 200 ilustrativo que pode executar as técnicas desta revelação. O codificador de vídeo 200 representa um exemplo do codificador de vídeo 20 da FIG. 1, embora outros exemplos sejam possíveis. A FIG. 2 é proporcionada para propósitos de explicação e não deve ser considerada como limitativa das técnicas como amplamente exemplificado e descrito nesta revelação. Para propósitos de explicação, esta revelação descreve o codificador de vídeo 200 no contexto de padrões de codificação de vídeo tais como o padrão de codificação de
Petição 870190069676, de 23/07/2019, pág. 34/101
29/71 vídeo HEVC e o padrão de codificação de vídeo Η. 266 em desenvolvimento. Entretanto, as técnicas desta revelação não estão limitadas a estes padrões de codificação de vídeo e são aplicáveis geralmente à codificação e decodificação de vídeo.
[0058] No exemplo da FIG. 2, o codificador de vídeo 200 inclui memória de dados de vídeo 230, a unidade de seleção de modo 202, a unidade de geração residual 204, a unidade de processamento de transformada 206, a unidade de quantificação 208, a unidade de quantificação inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, a unidade de filtro 216 o buffer (memória temporária) de imagem decodificada (DPB) 218 e a unidade de codificação por entropia 220.
[0059] A memória de dados de vídeo 230 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 200. O codificador de vídeo 200 pode receber os dados de vídeo armazenados na memória de dados de vídeo 230 a partir da, por exemplo, fonte de vídeo 18 (FIG. 1). O DPB 218 pode atuar como uma memória de imagem de referência que armazena dados de vídeo de referência para utilização na predição de dados de vídeo subsequente pelo codificador de vídeo 200. A memória de dados de vídeo 230 e o DPB 218 podem ser formados por qualquer uma de uma variedade de dispositivos de memória, tal como memória de acesso dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnético-resistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 230 e o DPB 218 podem ser proporcionados pelo mesmo dispositivo de memória ou por
Petição 870190069676, de 23/07/2019, pág. 35/101
30/71 dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 230 pode estar no chip com outros componentes do codificador de vídeo 200, como ilustrado, ou fora do chip em relação a esses componentes.
[0060] Nesta descrição, a referência à memória de dados de vídeo 230 não deve ser interpretada como sendo limitante à memória interna do codificador de vídeo 200, a menos que especificamente descrito como tal, ou a memória externa ao codificador de vídeo 200, a menos que especificamente descrito como tal. Ao invés disso, a referência à memória de dados de vídeo 230 deve ser entendida como a memória de referência que armazena dados de vídeo que o codificador de vídeo 200 recebe para codificação (por exemplo, dados de vídeo para um bloco atual que deve ser codificado) . A memória de dados de vídeo 230 também pode proporcionar armazenamento temporário de saídas a partir das várias unidades do codificador de vídeo 200.
[0061] As várias unidades da FIG. 2 são ilustradas para auxiliar a compreender as operações executadas pelo codificador de vídeo 200. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação dos mesmos. Os circuitos de função fixa referem-se a circuitos que proporcionam funcionalidade específica e são predefinidos nas operações que podem ser executadas. Os circuitos programáveis referem-se a circuitos que podem ser programados para executar várias tarefas e proporcionam funcionalidade flexível nas operações que podem ser executadas. Por exemplo, os circuitos programáveis podem
Petição 870190069676, de 23/07/2019, pág. 36/101
31/71 executar software ou firmware que fazem com que os circuitos programáveis operem da maneira definida pelas instruções do software ou de firmware. OS circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou para emitir parâmetros) , mas os tipos de operações que os circuitos de função fixa executam são geralmente imutáveis. Em alguns exemplos, uma ou mais das unidades podem ser blocos de circuitos distintos (função fixa ou programável), e em alguns exemplos, a uma ou mais unidades podem ser circuitos integrados.
[0062] O codificador de video 200 pode incluir unidades lógicas aritméticas (ALUs), unidades de função elementar (EFUs), circuitos digitais, circuitos analógicos e/ou núcleos programáveis, formados a partir de circuitos programáveis. Nos exemplos onde as operações do codificador de video 200 são executadas por software executado pelos circuitos programáveis, a memória de dados de video 230 pode armazenar o código objeto do software que o codificador de video 200 recebe e executa, ou outra memória (não apresentada) pode armazenar tais instruções.
[0063] A memória de dados de video 230 é configurada para armazenar dados de video recebidos. O codificador de video 200 pode recuperar uma imagem dos dados de video a partir da memória de dados de video 230 e proporcionar os dados de video para a unidade de geração residual 204 e para a unidade de seleção de modo 202. Os dados de video na memória de dados de video 230 podem ser dados de video brutos que devem ser codificados.
[0064] A unidade de seleção de modo 202 inclui
Petição 870190069676, de 23/07/2019, pág. 37/101
32/71 uma unidade de estimação de movimento 222, uma unidade de compensação de movimento 224, e uma unidade de predição intra 22 6. A unidade de seleção de modo 202 pode incluir unidades funcionais adicionais para executar a predição de vídeo de acordo com outros modos de predição. Como exemplos, a unidade de seleção de modo 202 pode incluir uma unidade de paleta, uma unidade de cópia intra-bloco (a qual pode fazer parte da unidade de estimação de movimento 222 e/ou da unidade de compensação de movimento 224), uma unidade de afim, uma unidade de modelo linear (LM), dentre outras.
[0065] A unidade de seleção de modo 202 geralmente coordena vários etapas de codificação para testar combinações de parâmetros de codificação e valores resultantes de distorção de taxa para tais combinações. Os parâmetros de codificação podem incluir divisão em partes de CTUs em CUs, modos de predição para as CUs, tipos de transformada para dados residuais das CUs, parâmetros de quantização para dados residuais das CUs e assim por diante. A unidade de seleção de modo 202 pode, em última análise, selecionar a combinação de parâmetros de codificação que possuem valores de distorção de taxa que são melhores do que as outras combinações testadas.
[0066] O codificador de vídeo 200 pode dividir em partes uma imagem recuperada a partir da memória de dados de vídeo 230 em uma série de CTUs e encapsular uma ou mais CTUs dentro de uma fração. A unidade de seleção de modo 202 pode dividir em partes uma CTU da imagem de acordo com uma estrutura de árvore, tal como a estrutura QTBT ou a estrutura por transformada quad-tree da HEVC descrita
Petição 870190069676, de 23/07/2019, pág. 38/101
33/71 acima. Como descrito acima, o codificador de video 200 pode formar uma ou mais CUs a partir da divisão em partes de uma CTU de acordo com a estrutura de árvore. Tal CU também pode ser referida geralmente como um bloco de vídeo ou bloco.
[0067] Em geral, a unidade de seleção de modo 202 também controla seus componentes (por exemplo, a unidade de estimação de movimento 222, a unidade de compensação de movimento 224 e a unidade predição intra 22 6) para gerar um bloco de predição para um bloco atual (por exemplo, uma CU atual, ou em HEVC, a porte sobreposta de uma PU e uma TU) . Para predição inter de um bloco atual, a unidade de estimação de movimento 222 pode executar uma pesquisa de movimento para identificar um ou mais blocos de referência mais proximamente correspondentes em uma ou mais imagens de referência (por exemplo, uma ou mais imagens anteriormente codificadas armazenadas no DPB 218) . Em particular, a unidade de estimação de movimento 222 pode calcular um valor representativo de quão um bloco de referência potencial é similar ao bloco atual, por exemplo, de acordo com a soma da diferença absoluta (SAD) , a soma das diferenças quadráticas (SSD), a diferença absoluta média (MAD), as diferenças médias quadráticas (MSD), dentre outros. A unidade de estimação de movimento 222 pode geralmente executar estes cálculos utilizando as diferenças de amostra por amostra entre o bloco atual e o bloco de referência sendo considerado. A unidade de estimação de movimento 222 pode identificar um bloco de referência possuindo um valor mais baixo resultante destes cálculos, indicando um bloco de referência que mais se
Petição 870190069676, de 23/07/2019, pág. 39/101
34/71 aproxima do bloco atual.
[0068] A Unidade de estimação de movimento 222 pode formar um ou mais vetores de movimento (MVs) que definem as posições dos blocos de referência nas imagens de referência em relação à posição do bloco atual em uma imagem atual. A unidade de estimação de movimento 222 pode então proporcionar os vetores de movimento para unidade de compensação de movimento 224. Por exemplo, para predição inter unidirecional, a unidade de estimação de movimento 222 pode proporcionar um único vetor de movimento, enquanto que para predição inter bidirecional, unidade de estimação de movimento 222 proporcionar dois vetores de movimento. A unidade de compensação de movimento 224 pode então gerar um bloco de predição utilizando os vetores de movimento. Por exemplo, a unidade de compensação de movimento 224 pode recuperar dados do bloco de referência utilizando o vetor de movimento. Como outro exemplo, se o vetor de movimento possuir precisão de amostra fracionária, a unidade de compensação de movimento 224 pode interpolar valores para o bloco de predição de acordo com um ou mais filtros de interpelação. Além disso, para predição inter bidirecional, a unidade de compensação de movimento 224 pode recuperar dados para dois blocos de referência identificados por vetores de movimento respectivos e combinar os dados recuperados, por exemplo, através de média de amostra por amostra ou média ponderada.
[0069] Como outro exemplo, para predição intra, ou codificação de predição intra, a unidade predição intra 22 6 pode gerar o bloco de predição de amostras vizinhas ao bloco atual. Por exemplo, para modos
Petição 870190069676, de 23/07/2019, pág. 40/101
35/71 direcionais, a unidade de predição intra 226 pode geralmente combinar matematicamente valores de amostras vizinhas e preencher estes valores calculados na direção definida através do bloco atual para produzir o bloco de predição. Como outro exemplo, para o modo DC, a unidade de predição intra 226 pode calcular uma média das amostras vizinhas para o bloco atual e gerar o bloco de predição para incluir esta média resultante para cada amostra do bloco de predição.
[0070] A FIG. 3 é um diagrama conceituai ilustrando um exemplo típico da predição Intra para um bloco de imagem 16x16. Como apresentado na FIG. 3, com predição Intra, o bloco de imagem 16x16 (no quadrado tracejado pesado) pode ser predito pelas amostras reconstruídas vizinhas acima e à esquerda (amostras de referência) ao longo de uma direção de predição selecionada (conforme indicado pela seta).
[0071] Em HEVC, a predição Intra de um bloco luma inclui 35 modos, incluindo o modo Planar, o modo DC e 33 modos angulares. As FIGS. 4A e 4B são diagramas conceituais ilustrando exemplos dos modos de predição Intra. Em HEVC, após o bloqueio de predição intra ter sido gerado para os modos intra VER (vertical) e HOR (horizontal), a coluna mais à esquerda e a linha mais superior das amostras de predição podem ser adicionalmente ajustadas, respectivamente.
[0072] Para capturar as direções de borda mais finas apresentadas em vídeos naturais, os modos direcionais intra são estendidos a partir de 33, como definido em HEVC, para 65. Os novos modos direcionais são representados como
Petição 870190069676, de 23/07/2019, pág. 41/101
36/71 setas tracejadas na FIG. 4B, e os modos Planar e DC permanecem os mesmos. Esses modos de predição intra direcionais mais densos aplicam-se a todos os tamanhos de bloco e a previsões intra de luma e croma.
[0073] Adicionalmente, podem ser utilizados os filtros de interpelação intra de quatro coeficientes ao invés dos filtros de interpelação intra de dois coeficientes, para gerar o bloco predição intra que aprimora a precisão de predição intra direcional. 0 filtro de limite em HEVC pode ser adicionalmente estendido em vários modos intra diagonais, e as amostras de limite de até quatro colunas ou fileiras são adicionalmente ajustadas utilizando um filtro de dois coeficientes (para modo intra 2 & 34) ou três coeficientes (para modo intra 3-6 & 30-33).
[0074] A combinação de predição intra dependente de posição (PDPC) é um pós-processamento para predição Intra que invoca uma combinação de predição Intra HEVC com amostras de referência de limite não filtradas. Na suavização de amostra de referência adaptativa (ARSS),
dois filtros de passa-baixa (LPF) são utilizados para
processar amostras de referência:
• LPF de 3 coeficientes com os coeficientes de
[1, 2, 1] / 4
• LPF de 5 coeficientes com os coeficientes de
[2, 3, 6, 3, 2] / 16
[0075] O CCLM é um novo método de predição croma, em que os blocos luma reconstruídos e o bloco croma adjacente são utilizados para derivar o bloco de predição croma. Informação adicional sobre PDPC, ARSS e CCLM podem ser encontradas em JVET-D1001, 4th Meeting: Chengdu, CN,
Petição 870190069676, de 23/07/2019, pág. 42/101
37/71
15-21 de outubro de 2016 (daqui em diante, JVET-D1001).
[0076] A unidade de seleção de modo 202 proporciona o bloco de predição para a unidade de geração residual 204. A unidade de geração residual 204 recebe uma versão não codificado bruta do bloco atual a partir da memória de dados de video 230 e o bloco de predição da unidade de seleção de modo 202. A Unidade de geração residual 204 calcula as diferenças de amostra por amostra entre o bloco atual e o bloco de predição. As diferenças resultantes de amostra por amostra definem um bloco residual para o bloco atual. Em alguns exemplos, a unidade de geração residual 204 também pode determinar diferenças entre os valores de amostra no bloco residual para gerar um bloco residual utilizando modulação de código de pulso diferencial residual (RDPCM). Em alguns exemplos, a unidade de geração residual 204 pode ser formada utilizando um ou mais circuitos de subtração que executam subtração binária.
[0077] Em exemplos onde a unidade de seleção de modo 202 divide CUs em PUs, cada PU pode ser associada a uma unidade de predição luma e com unidades de predição croma correspondentes. O codificador de video 200 e o decodificador de video 300 podem suportar PUs possuindo vários tamanhos. Como indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação luma da CU e o tamanho de uma PU pode se referir ao tamanho de uma unidade de predição luma da PU. Assumindo que o tamanho de uma determinada CU seja 2N x 2N, o codificador de video 200 pode suportar tamanhos de PU de 2N x 2N ou N x N para predição intra e tamanhos de PU simétricos de 2N x 2N, 2N x
Petição 870190069676, de 23/07/2019, pág. 43/101
38/71
N, N x 2N, N x N ou similares para predição inter. 0 codificador de video 20 e o decodificador de video 30 também podem suportar divisão em partes assimétrica para tamanhos de PU de 2N x nU, 2N x nD, nL x 2N e nR x 2N para predição inter.
[0078] Em exemplos onde a unidade de seleção de modo não divide em partes adicionalmente uma CU em PUs, cada CU pode ser associada com um bloco de codificação luma e com os blocos de codificação croma correspondentes. Como dito acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação luma da CU. O codificador de video 200 e o decodificador de vídeo 120 podem suportar tamanhos de CU de 2N x 2N, 2N x N ou N x 2N.
[0079] Para outras técnicas de codificação de vídeo, tal como codificação de modo de cópia intra-bloco, uma codificação de modo afim e codificação de modelo linear (LM) , como alguns exemplos, a unidade de seleção de modo 202, via unidades respectivas associadas com as técnicas de codificação, gera um bloco de predição para o bloco atual sendo codificado. Em alguns exemplos, tal como codificação de modo de paleta, a unidade de seleção de modo 202 pode não gerar um bloco de predição e, ao invés disso, gerar elementos de sintaxe que indicam a maneira na qual reconstruir o bloco baseado em uma paleta selecionada. Nestes modos, a unidade de seleção de modo 202 pode proporcionar estes elementos de sintaxe para a unidade de codificação por entropia 220 a serem codificados.
[0080] Como descrito acima, a unidade de geração residual 204 recebe os dados de vídeo para o bloco atual e o bloco de predição correspondente. A unidade de
Petição 870190069676, de 23/07/2019, pág. 44/101
39/71 geração residual 204 gera então um bloco residual para o bloco atual. Para gerar o bloco residual, a unidade de geração residual 204 calcula as diferenças de amostra por amostra entre o bloco de predição e o bloco atual. Assim, [0081] A unidade de processamento de transformada 206 aplica uma ou mais transformadas para o bloco residual para gerar um bloco de coeficientes de transformada (referido neste documento como um bloco de coeficientes de transformada). A unidade de processamento de transformada 206 pode aplicar várias transformadas para um bloco residual para formar o bloco de coeficientes de transformada. Por exemplo, a unidade de processamento de transformada 206 pode aplicar a uma transformada de cosseno discreta (DCT), uma transformada direcional, uma transformada de Karhunen-Loeve (KLT), ou uma transformada conceitualmente similar para um bloco residual. Em alguns exemplos, a unidade de processamento de transformada 206 pode executar várias transformadas para um bloco residual, por exemplo, uma transformada principal e uma transformada secundária, tal como uma transformada rotacional. Em alguns exemplos, a unidade de processamento de transformada 206 não aplica transformadas para um bloco residual.
[0082] A unidade de quantização 208 pode quantizar os coeficientes de transformada em um bloco de coeficientes de transformada, para produzir um bloco de coeficientes de transformada quantizado. A unidade de quantização 208 pode quantizar coeficientes de transformada de um bloco de coeficientes de transformada de acordo com um valor de parâmetro de quantização (QP) associado ao bloco atual. O codificador de video 200 (por exemplo, via
Petição 870190069676, de 23/07/2019, pág. 45/101
40/71 a unidade de seleção de modo 202) pode ajustar o grau de quantização aplicado aos blocos de coeficientes associados ao bloco atual por ajustar o valor de QP associado com a CU. A quantização pode introduzir perda de informação e, assim, os coeficientes de transformada quantizados podem possuir uma precisão menor do que os coeficientes de transformada originais produzidos pela unidade de processamento de transformada 206.
[0083] A Unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212 podem aplicar quantização inversa e transformadas inversas a um bloco de coeficientes de transformada quantizado, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficientes de transformada. A unidade de reconstrução 214 pode produzir um bloco reconstruído correspondendo ao bloco atual (embora potencialmente com algum grau de distorção) baseado no bloco residual reconstruído e em um bloco de predição gerado pela unidade de seleção de modo 202. Por exemplo, a unidade de reconstrução 214 pode adicionar amostras do bloco residual reconstruído para amostras correspondentes a partir do bloco de predição gerado pela unidade de seleção de modo 202 para produzir o bloco reconstruído.
[0084] A unidade de filtro 216 pode executar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 216 pode executar operações de desagrupamento para reduzir os artefatos de agrupamento ao longo das bordas das CUs. Como ilustrado por linhas tracejadas, as operações da unidade de filtro 216 podem ser saltadas em alguns exemplos.
Petição 870190069676, de 23/07/2019, pág. 46/101
41/71 [0085] O codificador de video 200 armazena blocos reconstruídos no DPB 218. Por exemplo, em exemplos onde as operações da unidade de filtro 216 não são necessárias, a unidade de reconstrução 214 pode armazenar blocos reconstruídos no DPB 218. Em exemplos onde as operações da unidade de filtro 216 são necessárias, a unidade de filtro 216 pode armazenar os blocos reconstruídos filtrados junto ao DPB 218. A unidade de estimação de movimento 222 e a unidade de compensação de movimento 224 podem recuperar uma imagem de referência do DPB 218, formada a partir dos blocos reconstruídos (e potencialmente filtrados) para blocos de predição inter das imagens codificadas subsequentes. Adicionalmente, a unidade de predição intra 226 pode utilizar blocos reconstruídos em DPB 218 de um quadro atual para predizer intra outros blocos no quadro atual.
[0086] Em geral, a unidade de codificação por entropia 220 pode codificar por entropia elementos de sintaxe recebidos a partir de outros componentes funcionais do codificador de vídeo 200. Por exemplo, a unidade de codificação por entropia 220 pode codificar por entropia blocos de coeficientes de transformada quantizados a partir da unidade de quantização 208. Como outro exemplo, a unidade de codificação por entropia 220 pode codificar por entropia elementos de sintaxe de predição (por exemplo, informação de movimento para predição inter ou informação de modo intra para predição intra) a partir da unidade de seleção de modo 202. A unidade de codificação por entropia 220 pode executar uma ou mais operações de codificação por entropia nos elementos de sintaxe, que são outro exemplo de
Petição 870190069676, de 23/07/2019, pág. 47/101
42/71 dados de vídeo, para gerar dados codificados por entropia. Por exemplo, a unidade de codificação por entropia 220 pode executar uma operação de codificação de comprimento variável adaptável ao contexto (CAVLC), uma operação CABAC, uma operação de codificação de comprimento variável para variável (V2V), uma operação de codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), uma operação de codificação por Entropia por Divisão de Variação de Probabilidade (PIPE), uma operação de codificação Exponencial-Golomb ou outro tipo de operação de codificação por entropia nos dados. Em alguns exemplos, a unidade de codificação por entropia 220 pode operar no modo de desvio, em que os elementos de sintaxe não são codificados por entropia.
[0087] O codificador de video 200 pode emitir um fluxo de bits que inclui os elementos de sintaxe codificados por entropia necessários para reconstruir blocos de uma fração ou imagem. Em particular, a unidade de codificação por entropia 220 pode produzir o fluxo de bits .
[0088] As operações descritas acima são descritas em relação a um bloco. Tal descrição deve ser entendida como sendo operações para um bloco de codificação luma e/ou blocos de codificação croma. Como descrito acima, em alguns exemplos, os blocos de codificação luma e blocos de codificação croma são componentes de luma e de croma de uma CU. Em alguns exemplos, o bloco de codificação luma e os blocos de codificação croma são componentes de luma e de croma de uma PU.
[0089] Em alguns exemplos, as operações
Petição 870190069676, de 23/07/2019, pág. 48/101
43/71 executadas em relação a um bloco de codificação luma não precisam ser repetidas para os blocos de codificação croma. Como um exemplo, as operações para identificar um vetor de movimento (MV) e uma imagem de referência para um bloco de codificação luma não precisam ser repetidas para identificar um MV e a imagem de referência para os blocos croma. Ao invés disso, o MV para o bloco de codificação luma pode ser escalonado para determinar o MV para os blocos croma, e a imagem de referência pode ser a mesma. Como outro exemplo, o processo de predição intra pode ser o mesmo para os blocos de codificação luma e os blocos de codificação croma.
[0090] Como discutido acima, a unidade de
filtro 216 pode executar uma ou mais operações de filtro em
blocos reconstruídos. Em alguns exemplos, tal como no
HEVC, a unidade de filtre i 216 pode empregar dois filtros in
loop, incluindo um filt ro de desagrupamento (DBF) e um
filtro de deslocamento adaptativo de Amostra (SAO).
[0091] A entrada para a ferramenta de codificação de filtro de desagrupamento é uma imagem reconstruída após a predição (por exemplo, predição intra ou predição inter, mas outros modos de predição são possíveis). O filtro de desagrupamento executa a detecção dos artefatos nos limites do bloco codificado e atenua os artefatos por aplicar um filtro selecionado. Como descrito em Norkin et al., HEVC Deblocking Filter, IEEE Trans. Circuitos Syst. Video Technol., 22 (12): 1746 -1754 (2012), comparado com o filtro de desagrupamento H.264 / AVC, o filtro de desagrupamento HEVC possui menor complexidade computacional e melhor capacidades de processamento
Petição 870190069676, de 23/07/2019, pág. 49/101
44/71 paralelo, enquanto ainda obtendo redução significativa dos artefatos visuais.
[00 92] A entrada para o filtro SAO é uma imagem reconstruída após invocar a filtragem de desagrupamento. O conceito de SAO é reduzir a distorção média da amostra de uma região por primeiro classificar as amostras da região em várias categorias com um classificador selecionado, obter um deslocamento para cada categoria e então adicionar o deslocamento a cada amostra da categoria, onde o índice do classif icador e os deslocamentos da região são codificados no fluxo de bits. Em HEVC, a região (a unidade para sinalizar os parâmetros SAO) é definida como sendo uma unidade de árvore de codificação (CTU). Dois tipos de SAO que podem satisfazer os requisitos de baixa complexidade são adotados em HEVC: deslocamento de borda (EO) e deslocamento de banda (BO) . Um índice do tipo SAO é codificado (o qual está na variação de [ 0, 2 ] ) .
[0093] Para EO, a classificação de amostra é baseada na comparação entre amostras atuais e amostras vizinhas de acordo com padrões direcionais unidimensionais (1-D): horizontal, vertical, diagonal de 135° e diagonal de 45°. As FIGS. 5A até 5D ilustram, cada uma, um padrão direcional 1-D para a classificação de amostras do Deslocamento de Borda. A FIG. 5A ilustra um padrão horizontal (classe EO = 0), a FIG. 5B ilustra um padrão vertical (classe EO = 1), a FIG. 5C ilustra um padrão diagonal de 135° (classe EO = 2) e a FIG. 5D ilustra um padrão diagonal de 45° (classe EO =3).0 EO é descrito em detalhe em Fu et al., Sample adaptive offset in the HEVC
Petição 870190069676, de 23/07/2019, pág. 50/101
45/71 standart, IEEE Trans. Circuits Syst. Video Technol., 22 (12) : 1755-1764 (2012) .
[0094] De acordo com o padrão EO selecionado, cinco categorias indicadas por edgeldx na Tabela 1 são adicionalmente definidas. Para edgeldx igual a 0~3, a magnitude de um deslocamento pode ser sinalizada enquanto o
indicador de sinal é implicitamente codificado, isto é, o
deslocamento negativo para edgeldx igual a 0 ou 1 e o
deslocamento positivo para edgeldx igual a 2 ou 3. Para
edgeldx igual a 4, o deslocamento é sempre definido como 0, o que significa que nenhuma operação é necessária para este caso.
Tabela 1: classificação para EO
Categoria (edgeldx) Condição
0 c < a && c < b
1 (c < a && c==b) || (c==a && c<b)
2 (c > a && c==b) || (c == a && c > b)
3 c > a && c > b
4 Nenhuma das acima
[0095] Para BO, a classificação da amostra é baseada em valores de amostra. Cada componente de cor pode possuir seus próprios parâmetros SAO. O BO implica que um deslocamento é adicionado a todas as amostras da mesma banda. A variação de valores da amostra é igualmente dividida em 32 bandas. Para as amostras de 8 bits variando de 0 a 255, a largura de uma banda é 8, e os valores de amostra de 8k a 8k + 7 pertencem à banda k, onde k varia de 0 a 31. A diferença média entre as amostras originais e as amostras reconstruídas em uma banda (isto é, deslocamento
Petição 870190069676, de 23/07/2019, pág. 51/101
46/71 de uma banda) é sinalizada para o decodificador. Pode não haver restrição nos sinais de deslocamento. Os Deslocamentos de quatro bandas consecutivas (e em alguns exemplos, somente deslocamentos de quatro bandas consecutivas) e a posição da banda inicial podem ser sinalizados para o decodificador.
[0096] Para reduzir as informações laterais, várias CTUs podem ser mescladas (copiando os parâmetros da CTU acima (através da configuração sao_merge_left_flag igual a 1) ou deixando a CTU (através da configuração sao_merge_up_flag igual a 1) para compartilhar parâmetros SAO) .
[00 97] Em adição aos métodos DB e HEVC SAO modificados, JEM incluiu outro método de filtragem, chamado Filtragem de Loop Adaptativo baseada em transformada de Geometria (GALF) . A GALF visa aprimorar a eficiência de codificação da ALF estudado no estágio HEVC, por introduzir vários novos aspectos. A ALF tem como objetivo minimizar o erro quadrático médio entre amostras originais e amostras decodificadas utilizando o filtro adaptativo baseado em Wiener. As amostras em uma imagem são classificadas em várias categorias e as amostras em cada categoria são então filtradas com seu filtro adaptativo associado. Os coeficientes do filtro podem ser sinalizados ou herdados para otimizar a compensação entre o erro quadrático médio e o overhead. Um esquema GALF pode adicionalmente aprimorar o desempenho da ALF, que introduz transformadas geométricas, tal como rotação, virada diagonal e vertical, a serem aplicadas às amostras na região de suporte de filtro dependendo da orientação do gradiente das amostras
Petição 870190069676, de 23/07/2019, pág. 52/101
47/71 reconstruídas antes da ALF. A entrada para ALF / GALF é a imagem reconstruída após invocar o SAO.
[00 98] A GALF foi proposta em Karczewicz et al., EE2.5: Improvements on adaptive loop filter, Equipe de Exploração (JVET) do ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, Doc. JVET-B0060, 2nd Meeting: San Diego, EUA, 20 Feb - 26 Feb 2016, e Karczewicz et al., EE2.5: Improvements on adaptive loop filter , Equipe de Exploração (JVET) da ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, doc. JVET-C0038, 3nd Meeting: Genebra, CH, 26 May - 1 June 2016, a ALF baseado em transformadas geométricas (GALF) . A GALF foi adotada para a versão mais recente do JEM, ou seja, JEM3.0. Na GALF, a classificação é modificada com os gradientes diagonais considerados e as transformadas geométricas poderíam ser aplicadas aos coeficientes de filtro. Cada bloco 2 x 2 é categorizado em uma das 25 classes baseadas em sua direcionalidade e valor quantizado de atividade. Os detalhes são descritos nas subseções a seguir.
[0099] Como descrito em C. Tomasi e R. Manduchi, Bilateral filtering for gray and color images, em Proc. IEEE ICCV, Bombay, índia, January 1998, A filtragem bilateral pode auxiliar a evitar a suavização em excesso indesejada de pixels na borda. A idéia principal da filtragem bilateral é que a ponderação das amostras vizinhas leve em conta os próprios valores de pixels para pesar mais os pixels com valores de luminância ou crominância semelhantes. Uma amostra localizada em (i, j) é filtrada utilizando sua amostra vizinha (k, 1). 0 peso ω ( í, j, k, 1) é o peso atribuído para a amostra (k, 1) para
Petição 870190069676, de 23/07/2019, pág. 53/101
48/71 filtrar a amostra (i, w(i, j, k, 1) - e* '
j) e é definido como:
0)
Na equação (1) acima, I (i, j) e I (k, 1) são os valores de intensidade das amostras (i, j) e (k, 1) respectivamente, Od é o parâmetro espacial, e v é o parâmetro de variação. As definições do parâmetro espacial e do parâmetro de variação são proporcionadas abaixo. O processo de filtragem com o valor da amostra filtrada denominado por Id (i, j) pode ser definido de acordo com a equação (2) abaixo.
. r _ W(M)* w(ij,k,í) ‘DVíj) ~ J >< G)
Σ&.ί k> 0 [00100] As propriedades (ou força) do filtro bilateral são controladas por esses dois parâmetros. As amostras localizadas mais próximas da amostra a ser filtrada, e as amostras possuindo menor diferença de intensidade para a amostra a ser filtrada, terão maior peso do que as amostras mais distantes e com maior diferença de intensidade.
[00101] Como descrito em Jacob Strom et al., Bilateral filter after inverse transform, JVET-D0069, 4nd Meeting: Chengdu, CN, 15-21 October 2016 (daqui em diante, JVET-D0069) , cada amostra reconstruída na unidade de transformada (TU) é filtrada utilizando apenas suas amostras vizinhas reconstruídas diretas. O filtro possui uma abertura de filtro com formato de sinal de mais centrada na amostra a ser filtrada, como representado na
Petição 870190069676, de 23/07/2019, pág. 54/101
49/71
FIG. 6. A FIG. 6 é um diagrama conceituai ilustrando ο bloco atual 600 que inclui a amostra atual 602 e as amostras vizinhas 604 até 610 utilizadas no processo de filtragem bilateral. O parâmetro espacial (ou seja, Od) pode ser definido baseado no tamanho da unidade de transformada e o parâmetro de variação (isto é, Or) pode ser definido baseado no QP utilizado para o bloco atual 400. As equações (3) e (4) proporcionam um exemplo de como os parâmetros espaciais e de variação podem ser determinados.
ininíTU block width, TU block height) = 0.92 - ----------------—---------------- (,q
17) sã .........................,0.01) (4) [00102] Como descrito em Jacob Strom et al., Bilateral filter strength based on prediction mode, JVETE0032, 5nd Meeting: Genebra, CH, 12-20 January 2017 (daqui em diante, JVET-E0032), para adicionalmente reduzir a perda de codificação sob configuração de pequeno atraso, a força do filtro é adicionalmente projetada para depender do modo codificado. Para blocos codificados intra, a equação acima (3) ainda é utilizada. Enquanto para blocos codificados inter, a seguinte equação (5) é aplicada.
mín(TU block width, TU block height) (¾ = 0.72--—-----------1— v5) [00103] Nota-se que o método de filtragem bilateral proposto só pode ser aplicado a blocos luma com pelo menos um coeficiente diferente de zero. Para blocos croma e blocos luma com todos os coeficientes zero, o método de filtragem bilateral pode estar sempre
Petição 870190069676, de 23/07/2019, pág. 55/101
50/71 desabilitado.
[00104] Para amostras localizadas nos limites superior e esquerdo da TU (isto é, linha superior e coluna esquerda) , apenas amostras vizinhas dentro da TU atual são utilizadas para filtrar a amostra atual. A FIG. 7 é um diagrama conceituai ilustrando como amostras vizinhas dentro de uma TU atual (por exemplo, uma T4 4x4) podem ser utilizadas para filtrar uma amostra atual. A FIG. 7 ilustra a TU atual 700 como incluindo a amostra atual 700 e as amostras vizinhas 704 até 710. Como apresentado na FIG. 7, a amostra vizinha esquerda 710 da amostra atual 702 não está incluida na TU atual 700. Deste modo, a amostra vizinha esquerda 710 não pode ser utilizada no processo de filtragem da amostra atual 702.
[00105] A Unidade de filtro 216 pode aplicar um filtro bilateral de acordo com as técnicas desta revelação. Por exemplo, a unidade de filtro 216 pode aplicar um filtro bilateral em amostras reconstruídas de um bloco atual gerado pela unidade de reconstrução 214 de acordo com a equação (2) acima. Depois de aplicar o filtro bilateral às amostras reconstruídas do bloco atual, a unidade de filtro 216 pode armazenar uma versão filtrada do bloco atual no buffer de imagem decodificada 218. A versão filtrada do bloco atual pode ser utilizada como uma imagem de referência na codificação de outra imagem dos dados de vídeo, tal como descrito em outro local desta revelação.
[00106] O projeto de filtragem bilateral no JVET-D0069 e no JVET-E0032 pode possuir os seguintes possíveis problemas. Em particular, o filtro bilateral é aplicado logo após a reconstrução de um bloco. Portanto, o
Petição 870190069676, de 23/07/2019, pág. 56/101
51/71 codificador de vídeo 20 pode ter que esperar até que o processo de filtragem de um bloco atual seja concluído para o próximo bloco vizinho a ser codificado. Tal projeto pode diminuir o rendimento do pipeline, o que pode ser indesejável.
[00107] As técnicas desta revelação podem abordar o potencial problema mencionado acima. Algumas das técnicas propostas podem ser combinadas. As técnicas propostas podem ser aplicadas a outros métodos de filtragem in loop que dependem de certas informações conhecidas para derivar implicitamente parâmetros de filtro adaptativos, ou filtros com sinalização explícita de parâmetros.
[00108] De acordo com uma ou mais técnicas desta revelação, a unidade de filtro 216 pode seletivamente filtrar amostras de um bloco atual de modo que a filtragem não impeça o processamento paralelo de blocos vizinhos. Por exemplo, a unidade de filtro 216 pode categorizar amostras do bloco atual como a ser filtrado ou para não ser filtrado e somente executar a filtragem bilateral em amostras categorizadas como a ser filtrada (isto é, unidade de filtro 216 pode abster-se de filtrar bilateralmente amostras categorizadas como não sendo para ser filtradas). Desta forma, a unidade de filtro 216 ainda pode obter alguns dos benefícios da filtragem enquanto ainda sendo capaz de processar blocos vizinhos em paralelo.
[00109] A unidade de filtro 216 pode categorizar amostras do bloco atual como a ser filtradas ou a não serem filtradas de várias maneiras. Como um exemplo, a unidade de filtro 216 pode executar a categorização baseada em se as amostras podem ser utilizadas para
Petição 870190069676, de 23/07/2019, pág. 57/101
52/71 predizer amostras de blocos vizinhos. Como outro exemplo, a unidade de filtro 216 pode executar a categorização baseada em se as amostras estão localizadas em uma região predefinida do bloco atual. Como outro exemplo, a unidade de filtro 216 pode executar a categorização baseada em se as amostras são realmente utilizadas para predizer blocos vizinhos.
[00110] A FIG. 8 é um diagrama conceituai ilustrando um exemplo de como as amostras podem ser categorizadas, de acordo com uma ou mais técnicas da presente revelação. Como apresentado na FIG. 8, a imagem 800 inclui o bloco atual 810, o bloco vizinho inferior 820 e o bloco vizinho direito 830.
[00111] Como discutido acima, unidade de filtro 216 pode categorizar as amostras do bloco atual baseado em se as amostras podem ser utilizadas para predizer as amostras nos blocos vizinhos (por exemplo, em predição intra ou modo LM) . Por exemplo, a unidade de filtro 216 pode categorizar, como para não serem filtradas, todas as amostras do bloco atual que possam possivelmente ser utilizadas por um ou mais blocos vizinhos para predição intra sem avaliar se as amostras são / serão realmente utilizadas para predição intra. Para ilustrar, se uma primeira amostra do bloco atual pode ser utilizada por blocos vizinhos para predição intra, à unidade de filtro 216 pode categorizar a primeira amostra como para não ser filtrada e abster-se de executar a filtragem bilateral na primeira amostra. Por outro lado, se uma segunda amostra do bloco atual não puder ser utilizada por blocos vizinhos para predição intra, à unidade de filtro 216 pode
Petição 870190069676, de 23/07/2019, pág. 58/101
53/71 categorizar a segunda amostra como para ser filtrada e executar filtragem bilateral na segunda amostra. Em alguns exemplos, a unidade de filtro 216 pode determinar que as amostras localizadas na coluna mais à direita ou na fileira inferior do bloco atual (assumindo a ordem de varredura por rastreio horizontal, é entendido que a coluna mais à direita e a fileira inferior são interpretadas como coluna / fileira principal e que as outras colunas / fileiras podem ser utilizadas com outras ordens de varredura) pode ser utilizada por blocos vizinhos para predição intra. Por exemplo, no exemplo da FIG. 8, a unidade de filtro 216 pode categorizar amostras na coluna mais direita 812 e amostras na fileira inferior 814 como para não filtrar porque é possivel que os blocos vizinhos 820 e 830 utilizem as amostras na coluna mais à direita 812 e as amostras na fileira inferior 814 para predição intra.
[00112] Como discutido acima, a unidade de filtro 216 pode categorizar as amostras do bloco atual baseada em se as amostras estão localizadas em uma região predefinida do bloco atual. Esta técnica pode ser similar e pode se sobrepor em algumas circunstâncias, à categorização baseada em se as amostras podem ser utilizadas por blocos vizinhos para predição intra. Por exemplo, a região predefinida do bloco atual pode incluir a coluna mais à direita e a fileira inferior do bloco atual.
[00113] Como discutido acima, a unidade de filtro 216 pode executar a categorização baseada em se as amostras são realmente utilizadas para predição de blocos vizinhos. Para determinar quais amostras do bloco atual são utilizadas pelos blocos vizinhos, a unidade de filtro
Petição 870190069676, de 23/07/2019, pág. 59/101
54/71
216 pode determinar, baseada nas informações recebidas a partir da unidade de seleção de modo 202, se os blocos vizinhos do bloco atual são codificados com o modo intra. Em resposta a determinar que um bloco vizinho direito (por exemplo, bloco 830) do bloco atual é codificado utilizando predição intra, a unidade de filtro 216 pode determinar que as amostras do bloco atual que estão localizadas em uma coluna mais à direita (por exemplo, as amostras na coluna 812) do bloco atual sejam utilizadas por blocos vizinhos para predição intra. Entretanto, em resposta a determinar que o bloco vizinho direito (por exemplo, bloco 830) do bloco atual não é codificado utilizando à predição intra (por exemplo, é codificado utilizando predição inter), a unidade de filtro 216 pode determinar que amostras do bloco atual que estão localizadas na coluna mais à direita (por exemplo, amostras na coluna 812) do bloco atual não são utilizadas por blocos vizinhos para predição intra. Similarmente, em resposta a determinar que um bloco vizinho inferior (por exemplo, bloco 820) do bloco atual é codificado utilizando predição intra, a unidade de filtro 216 pode determinar que amostras do bloco atual que estão localizadas em uma fileira inferior (por exemplo, amostras na fileira 814) do bloco atual são utilizadas por blocos vizinhos para predição intra. Entretanto, em resposta à determinação de que o bloco vizinho inferior (por exemplo, o bloco 820) do bloco atual não é codificado utilizando predição intra, a unidade de filtro 216 pode determinar que as amostras do bloco atual que estão localizadas na fileira inferior (por exemplo, amostras na fileira 814) do bloco atual não são utilizadas por blocos vizinhos para predição
Petição 870190069676, de 23/07/2019, pág. 60/101
55/71 intra .
[00114] Em alguns exemplos, como discutido acima, o codificador de video 20 pode utilizar um modo de predição de modelo linear de componente cruzado (CCLM) para predizer amostras de dados de vídeo. No CCLM, o codificador de vídeo 20 pode utilizar as amostras luma de todo o bloco quando executando o processo de predição intra croma de um bloco croma. Deste modo, onde um bloco vizinho do bloco atual dependia de amostras de reconstrução luma (por exemplo, se o bloco vizinho é codificado utilizando CCLM), a unidade de filtro 216 pode determinar que todas as amostras do bloco atual são realmente utilizadas para predição de blocos vizinhos. Em tais exemplos, a unidade de filtro 216 pode abster-se de executar a filtragem bilateral em quaisquer amostras do bloco atual.
[00115] Quando categorizando amostras baseado em se as amostras podem ser utilizadas para predizer amostras de blocos vizinhos ou baseado em se as amostras estão localizadas em uma região predefinida do bloco atual, a unidade de filtro 216 pode evitar realmente determinar que, se houver, amostras do bloco atual são realmente utilizadas para predizer blocos vizinhos. Por não determinar quais amostras do bloco atual são realmente utilizadas para predizer os blocos vizinhos, a unidade de filtragem 216 pode reduzir a complexidade do processo de filtragem. Entretanto, por determinar quais amostras do bloco atual são realmente utilizadas para predizer os blocos vizinhos e somente abster-se de filtrar as amostras que realmente são utilizadas, a unidade de filtragem 216
Petição 870190069676, de 23/07/2019, pág. 61/101
56/71 pode filtrar um número maior de amostras, o que pode aprimorar a qualidade / redução de artefato.
[00116] Em alguns exemplos, ao contrário de filtrar seletivamente algumas amostras de um bloco atual, a unidade de filtro 216 pode executar a filtragem bilateral em todas as amostras do bloco atual e armazenar dois conjuntos de blocos / sub-blocos de reconstrução. Por exemplo, a unidade de filtro 216 pode armazenar um primeiro conjunto que inclui amostras filtradas não bilateralmente do bloco atual e um segundo conjunto que inclui amostras filtradas bilateralmente do bloco atual. Em alguns exemplos, o segundo conjunto pode incluir amostras que são filtradas bilateralmente, mas ainda não filtradas por outros filtros in-loop, tal como o filtro de desagrupamento.
[00117] Em alguns exemplos, a unidade de predição intra 226 pode sempre utilizar o primeiro conjunto para executar um processo de predição intra luma. Em alguns exemplos, a unidade de predição intra 226 pode selecionar o primeiro conjunto ou o segundo conjunto para executar a predição intra luma de blocos vizinhos baseado na informação do modo de predição intra. Por exemplo, se um bloco vizinho de bloco atual é codificado com o modo PDPC ou ARSS ou o filtro de limite está habilitado, a unidade de predição intra 226 pode selecionar o primeiro conjunto para o processo de predição intra luma do bloco vizinho. Em alguns exemplos, se o modo croma depende de amostras de reconstrução de luma, por exemplo, o modo de predição de modelo linear de componente cruzado (CCLM), a unidade de predição intra 226 pode utilizar o primeiro
Petição 870190069676, de 23/07/2019, pág. 62/101
57/71 conjunto do bloco luma correspondente quando executando o processo de predição intra croma de um bloco croma.
[00118] Similarmente, o processo de filtragem para a reconstrução de um bloco / sub-bloco pode ser aplicado após toda a predição intra para o próximo bloco codificado ser feita. Neste documento, a predição intra pode incluir, mas não ser limitada a: 1) predição intra normal tradicional utilizando amostras reconstruídas casuais, 2) predição de modelo linear de componentes cruzados (CCLM).
[00119] O codificador de vídeo 200 representa um exemplo de um dispositivo configurado para codificar dados de vídeo, o dispositivo incluindo uma memória configurada para armazenar os dados de vídeo (por exemplo, o buffer de imagem decodificada 218) e um ou mais processadores configurados para obter amostras reconstruídas de um bloco atual dos dados de video; e seletivamente filtrar bilateralmente as amostras reconstruídas do bloco atual para gerar um bloco atual filtrado, em que filtrar seletivamente filtrar bilateralmente as amostras reconstruídas do bloco atual compreende abster-se de filtrar bilateralmente pelo menos uma amostra reconstruída do bloco atual de modo que o bloco de atual filtrado inclua pelo menos uma amostra não filtrada bilateralmente.
[00120] A FIG. 9 é um diagrama de blocos ilustrando um decodificador de vídeo ilustrativo 300 que pode executar as técnicas desta revelação. O decodificador de vídeo 300 representa um exemplo do decodificador de vídeo 30 da FIG. 1, embora outros exemplos sejam possíveis.
Petição 870190069676, de 23/07/2019, pág. 63/101
58/71
A FIG. 9 é proporcionada para propósito de explicação e não é limitante nas técnicas como amplamente exemplificado e descrito nesta revelação. Para propósito de explicação, esta revelação descreve o decodificador de vídeo 300 descrito de acordo com as técnicas de JEM e HEVC. Entretanto, as técnicas desta revelação podem ser executadas por dispositivos de codificação de vídeo que são configurados para outros padrões de codificação de vídeo.
[00121] No exemplo da FIG. 9, o decodificador de vídeo 300 inclui a memória do buffer de imagem codificada (CPB) 320, a unidade de decodificação por entropia 302, a unidade de processamento de predição 304, a unidade de quantização inversa 306, a unidade de processamento de transformada inversa 308, a unidade de reconstrução 310, a unidade de filtro 312 e o buffer de imagem decodificada (DPB) 314. A unidade de processamento de predição 304 inclui a unidade de compensação de movimento 316 e a unidade de predição intra 318. A unidade de processamento de predição 304 pode incluir unidades de adição para executar predição de acordo com outros modos de predição. Como exemplos, a unidade de processamento de predição 304 pode incluir uma unidade de paleta, uma unidade de cópia intra-blocos (a qual pode formar parte da unidade de compensação de movimento 316), uma unidade afim, uma unidade de modelo linear (LM), dentre outras. Em outros exemplos, o decodificador de vídeo 300 pode incluir mais, menos ou diferentes componentes funcionais.
[00122] A memória CPB 320 pode armazenar dados de vídeo, tal como um fluxo de bits de vídeo codificado, para serem decodificados pelos componentes do decodificador
Petição 870190069676, de 23/07/2019, pág. 64/101
59/71 de vídeo 300. Os dados de vídeo armazenados na memória CPB 320 podem ser obtidos, por exemplo, a partir do meio de armazenamento 28 (FIG. 1) . A memória de CPB 320 pode incluir um CPB que armazena dados de vídeo codificados (por exemplo, elementos de sintaxe) a partir de um fluxo de bits de vídeo codificado. Além disso, a memória CPB 320 pode armazenar dados de vídeo diferentes de elementos de sintaxe de uma imagem codificada, tais como dados temporários representando saídas das várias unidades do decodificador de vídeo 300. O DPB 314 geralmente armazena imagens decodificadas, que o decodificador de vídeo 300 pode emitir e/ou utilizar como dados de vídeo de referência quando decodificando dados ou imagens subsequentes do fluxo de bits de vídeo codificado. A memória CPB 320 e o DPB 314 podem ser formados por qualquer um de uma variedade de dispositivos de memória, tal como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magneto-resistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória CPB 320 e o DPB 314 podem ser proporcionados pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em vários exemplos, a memória de CPB 320 pode estar no chip com outros componentes do decodificador de vídeo 300, ou fora do chip em relação a esses componentes.
[00123] As várias unidades apresentadas na FIG.
são ilustradas para auxiliar no entendimento das operações executadas pelo decodificador de vídeo 300. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação dos mesmos. Similar à FIG. 2, circuitos de função fixa referem-se a
Petição 870190069676, de 23/07/2019, pág. 65/101
60/71 circuitos que proporcionam funcionalidade particular e são predefinidos nas operações que podem ser executadas. Os circuitos programáveis referem-se a circuitos que podem ser programados para executar várias tarefas e proporcionam funcionalidade flexível nas operações que podem ser executadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que fazem com que os circuitos programáveis operem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), mas os tipos de operações que os circuitos de função fixa executam são geralmente imutáveis. Em alguns exemplos, a uma ou mais das unidades podem ser blocos de circuitos distintos (função fixa ou programável), e em alguns exemplos, a uma ou mais unidades podem ser circuitos integrados.
[00124] O decodificador de vídeo 300 pode incluir ALUs, EFUs, circuitos digitais, circuitos analógicos e/ou núcleos programáveis formados a partir de circuitos programáveis. Nos exemplos onde as operações do decodificador de vídeo 300 são executadas pelo software em execução nos circuitos programáveis, a memória no chip ou fora do chip pode armazenar instruções (por exemplo, código objeto) do software que o decodificador de vídeo 300 recebe e executa.
[00125] A unidade de decodificação por entropia 302 pode receber dados de vídeo codificados a partir do CPB e decodificar por entropia os dados de vídeo para reproduzir os elementos de sintaxe. A unidade de processamento de predição 304, a unidade de quantização
Petição 870190069676, de 23/07/2019, pág. 66/101
61/71 inversa 306, a unidade de processamento de transformada inversa 308, a unidade de reconstrução 310 e a unidade de filtro 312 podem gerar dados de video decodificados baseado nos elementos de sintaxe extraídos a partir do fluxo de bits .
[00126] Em geral, o decodificador de video 300 reconstrói uma imagem em uma base bloco por bloco. O decodificador de video 300 pode executar uma operação de reconstrução em cada bloco individualmente (onde o bloco sendo atualmente reconstruído, isto é, decodificado, pode ser referido como um bloco atual).
[00127] A unidade de decodificação por entropia 302 pode decodificar por entropia os elementos de sintaxe definindo coeficientes de transformada quantizados de um bloco de coeficientes de transformada quantizados, bem como a informação de transformada, tal como um parâmetro de quantização (QP) e/ou indicação (indicações) de modo de transformada. A unidade de quantização inversa 306 pode utilizar o QP associado com bloco de coeficientes de transformada quantizados para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa para a unidade de quantização inversa 306 a ser aplicada. A unidade de quantização inversa 306 pode, por exemplo, executar uma operação de desvio à esquerda de bit a bit para quantizar inversamente os coeficientes de transformada quantizados. A unidade de quantização inversa 306 pode, desse modo, formar um bloco de coeficientes de transformada incluindo coeficientes de transformada.
[00128] Após a unidade de quantização inversa 306 formar o bloco de coeficientes de transformada, a
Petição 870190069676, de 23/07/2019, pág. 67/101
62/71 unidade de processamento de transformada inversa 308 pode aplicar uma ou mais transformadas inversas ao bloco de coeficientes de transformada para gerar um bloco residual associado com o bloco atual. Por exemplo, a unidade de processamento de transformada inversa 308 pode aplicar uma DCT inversa, uma transformada inversa de número inteiro, uma transformada inversa de Karhunen-Loeve (KLT), uma transformada rotacional inversa, uma transformada direcional inversa, ou outra transformada inversa para o bloco de coeficientes.
[00129] Adicionalmente, a unidade de processamento de predição 304 gera um bloco de predição de acordo com elementos de sintaxe de informação de predição que foram decodificados por entropia pela unidade de decodificação por entropia 302. Por exemplo, se os elementos de sintaxe de informação de predição indicam que o bloco atual é predito inter, a unidade de compensação de movimento 316 pode gerar o bloco de predição. Neste caso, os elementos de sintaxe de informação de predição podem indicar uma imagem de referência no DPB 314 a partir da qual recuperar um bloco de referência, bem como um vetor de movimento identificando uma localização do bloco de referência na imagem de referência relativa à localização do bloco atual na imagem atual. A unidade de compensação de movimento 316 pode geralmente executar o processo de predição inter de uma maneira que é substancialmente similar àquela descrita em relação à unidade de compensação de movimento 224 (FIG. 2).
[00130] Como outro exemplo, se os elementos de sintaxe de informação de predição indicam que o bloco atual
Petição 870190069676, de 23/07/2019, pág. 68/101
63/71 é predito intra, a unidade predição intra 318 pode gerar o bloco de predição de acordo com um modo predição intra indicado pelos elementos de sintaxe de informação de predição. Mais uma vez, a unidade de predição intra 318 pode geralmente executar o processo de predição intra de uma maneira que é substancialmente similar a esta descrita em com respeito à unidade de predição intra 22 6 (FIG. 2) . A unidade de predição intra 318 pode recuperar dados de amostras vizinhas para o bloco atual a partir do DPB 314.
[00131] A unidade de reconstrução 310 pode reconstruir o bloco atual utilizando o bloco de predição e o bloco residual. Por exemplo, a unidade de reconstrução 310 pode adicionar amostras do bloco residual para amostras correspondentes do bloco de predição para reconstruir o bloco atual.
[00132] A unidade de filtro 312 pode executar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 312 pode executar operações de desagrupamento para reduzir artefatos de agrupamento ao longo das bordas dos blocos reconstruídos. Como ilustrado por linhas tracejadas, as operações da unidade de filtro 312 não são necessariamente executadas em todos os exemplos.
[00133] A unidade de filtro 312 pode geralmente executar um processo de filtragem em uma matéria que é substancialmente similar àquela descrita em relação à unidade de filtro 216 (Figura 1) . Por exemplo, a unidade de filtro 312 pode seletivamente filtrar amostras de um bloco atual, de modo que a filtragem não impeça o processamento paralelo de blocos vizinhos. Por exemplo, a
Petição 870190069676, de 23/07/2019, pág. 69/101
64/71 unidade de filtro 312 pode categorizar amostras do bloco atual como a ser filtrada ou a não ser filtrada e somente executar a filtragem bilateral em amostras categorizadas como a serem filtradas (isto é, a unidade de filtro 312 pode abster-se de filtrar bilateralmente as amostras categorizadas como a não serem filtradas). Deste modo, a unidade de filtro 312 ainda pode obter alguns dos benefícios da filtragem enquanto ainda sendo capaz de processar blocos vizinhos em paralelo.
[00134] O decodificador de video 300 pode armazenar os blocos reconstruídos no DPB 314. Por exemplo, a unidade de filtro 312 pode armazenar os blocos reconstruídos filtrados no DPB 314. Como discutido acima, o DPB 314 pode proporcionar informação de referência, tal como amostras de uma imagem atual para predição intra e imagens anteriormente decodificadas para compensação de movimento subsequente, para a unidade de processamento de predição 304. Além disso, o decodificador de vídeo 300 pode emitir as imagens decodificadas a partir do DPB para apresentação subsequente em um dispositivo de vídeo, tal como dispositivo de vídeo 32 da FIG. 1 [00135] A FIG. 10 é um fluxograma ilustrando um processo ilustrativo para filtrar um bloco reconstruído de dados de vídeo, de acordo com uma ou mais técnicas desta revelação. Para propósito de explicação, o método da FIG. 10 é descrito abaixo como sendo executado pelo decodificador de vídeo 30/300 e pelos seus componentes (por exemplo, ilustrados nas FIGS. 1 e 9), embora o método da FIG. 10 possa ser executado por outros decodificadores de vídeo ou codificadores de vídeo. Por exemplo, o método da
Petição 870190069676, de 23/07/2019, pág. 70/101
65/71
FIG. 10 pode ser executado pelo codificador de video 20/200 (por exemplo, ilustrado nas FIGs. 1 e 2).
[00136] O decodificador de vídeo 30 pode reconstruir amostras de um bloco atual de dados de vídeo (1002) . Por exemplo, a unidade de reconstrução 310 pode adicionar amostras de um bloco residual (gerado pela unidade de processamento de transformada inversa 308) para amostras correspondentes de um bloco de predição (gerado pela unidade de processamento de predição 304) para reconstruir as amostras do bloco atual.
[00137] O decodificador de vídeo 30 pode categorizar amostras do bloco atual como para ser filtradas ou para não ser filtradas (1004) . Como discutido acima, a unidade de filtro 216 pode categorizar as amostras do bloco atual como para ser filtradas ou não para ser filtradas de várias maneiras. Como um exemplo, a unidade de filtro 216 pode executar a categorização baseado em se as amostras podem ser utilizadas para predizer amostras de blocos vizinhos. Como outro exemplo, a unidade de filtro 216 pode executar a categorização baseado em se as amostras estão localizadas em uma região predefinida do bloco atual. Como outro exemplo, a unidade de filtro 216 pode executar a categorização baseado em se as amostras são realmente utilizadas para predizer os blocos vizinhos. Em alguns exemplos, categorizar uma amostra pode ser interpretado como determinar se filtra. Por exemplo, a unidade de filtro 216 pode categorizar uma amostra particular por determinar se deve ou não filtrar a amostra particular e não precisa atribuir um valor a algum atributo ou variável para a amostra particular.
Petição 870190069676, de 23/07/2019, pág. 71/101
66/71 [00138] 0 decodificador de video 30 pode filtrar as amostras do bloco atual que são categorizadas para serem filtradas (1006). Por exemplo, a unidade de filtro 216 pode executar um processo de filtragem bilateral em cada amostra categorizada como para ser filtrada de acordo com a equação (2) acima. Em particular, a unidade de filtro 216 pode substituir cada amostra categorizada de modo a ser filtrada com uma média ponderada de si própria e dos seus vizinhos.
[00139] O decodificador de video 30 pode armazenar as amostras filtradas do bloco atual (1008) . Por exemplo, a unidade de filtro 216 pode armazenar um bloco atual filtrado (que inclui as amostras filtradas do bloco atual junto com amostras não filtradas categorizadas como para não ser filtradas) no buffer de imagem decodificada 314. Além disso, o decodificador de video 30 pode emitir imagens decodificadas a partir do DPB para apresentação subsequente em um dispositivo de video, tal como o dispositivo de video 32 da FIG. 1.
[00140] Alguns aspectos desta revelação foram descritos com relação aos padrões de codificação de video para propósito de ilustração. Entretanto, as técnicas descritas nesta revelação podem ser úteis para outros processos de codificação de video, incluindo outros processos de codificação de video padrão ou proprietários ainda não desenvolvidos.
[00141] As técnicas descritas acima podem ser executadas pelo codificador de video 200 e/ou pelo decodificador de video 120, ambos podendo ser geralmente referidos como um codificador de video. Da mesma forma, a
Petição 870190069676, de 23/07/2019, pág. 72/101
67/71 codificação de video pode se referir à codificação de video ou à decodificação de video, conforme aplicável.
[00142] Deve ser entendido que todas as técnicas descritas neste documento podem ser utilizadas individualmente ou em combinação. Esta revelação inclui vários métodos de sinalização que podem alterar dependendo de determinados fatores tais como o tamanho de bloco, o tamanho de paleta, o tipo de fração, etc. Tal variação em sinalizar ou inferir os elementos de sintaxe pode ser conhecida para o codificador e o decodificador a priori ou pode ser explicitamente sinalizada no conjunto de parâmetros de vídeo (VPS), no conjunto de parâmetros de sequência (SPS), no conjunto de parâmetros de imagem (PPS), no cabeçalho da fração, em um nível de ladrilho ou em outro lugar.
[00143] É para ser reconhecido que dependendo do exemplo, alguns atos ou eventos de qualquer uma das técnicas descritas neste documento podem ser executados em uma sequência diferente, podem ser adicionados, fundidos ou deixados de lado (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em alguns exemplos, os atos ou eventos podem ser executados simultaneamente, por exemplo, através do processamento multiencadeado, do processamento de interrupção ou dos vários processadores ao invés de sequencialmente. Adicionalmente, embora alguns aspectos desta revelação sejam descritos como sendo executados por um único módulo ou unidade para propósitos de clareza, deve ser entendido que as técnicas desta revelação podem ser executadas por uma combinação de unidades ou módulos
Petição 870190069676, de 23/07/2019, pág. 73/101
68/71 associados a um codificador de video. .
[00144] Embora as combinações particulares de vários aspectos das técnicas sejam descritas acima, estas combinações são proporcionadas meramente para ilustrar exemplos das técnicas descritas nesta revelação. Consequentemente, as técnicas desta revelação não devem ser limitadas a estas combinações ilustrativas e podem abranger qualquer combinação concebível dos vários aspectos das técnicas descritas nesta revelação.
[00145] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas, como uma ou mais instruções ou código, através de um meio legivel por computador e executadas por uma unidade de processamento baseada em hardware. A midia legivel por computador pode incluir a midia de armazenamento legivel por computador, a qual corresponde a um meio tangivel tal como a midia de armazenamento de dados ou a midia de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, a midia legivel por computador pode geralmente corresponder a (1) midia de armazenamento legivel por computador tangivel a qual não é temporária ou (2) um meio de comunicação tal como um sinal ou onda portadora. A midia de armazenamento de dados pode ser qualquer midia disponível que possa ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, códigos e/ou estruturas de dados para
Petição 870190069676, de 23/07/2019, pág. 74/101
69/71 implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio legível por computador.
[00146] A título de exemplo e não de limitação, tal midia não temporária legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser utilizado para armazenar o código de programa desejado na forma de instruções ou de estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada um meio legível por computador. Por exemplo, se instruções forem transmitidas a partir de um website, servidor, ou outra fonte remota utilizando um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL), ou tecnologias não cabeadas tais como infravermelho, rádio e microondas, então o cabo coaxial, cabo de fibra ótica, par trançado, DSL, ou tecnologias não cabeadas tal como infravermelho, rádio e microondas estão incluídas na definição de meio. Entretanto, deve ser entendido que a mídia de armazenamento legível por computador e a mídia de armazenamento de dados não incluem conexões, ondas portadores, sinais ou outras mídias temporárias, ao invés disso, são direcionadas para a mídia de armazenamento tangível não temporária. Disco magnético e disco ótico, como utilizado neste documento, incluem disco ótico compacto (CD), disco ótico a laser, disco ótico, disco ótico versátil digital (DVD), disco ótico flexível e disco ótico Blu-ray onde discos magnéticos
Petição 870190069676, de 23/07/2019, pág. 75/101
70/71 normalmente reproduzem dados magneticamente, enquanto disco óticos reproduzem dados opticamente com lasers. Combinações do dito acima também devem ser incluídas dentro do escopo de mídia legível por computador.
[00147] As instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicações específicas (ASICs), arranjos lógicos programáveis em campo (FPGAs), ou outros equivalentes integrados ou circuitos de lógica discreta. Por consequência, o termo processador, como utilizado neste documento, pode referir-se a qualquer uma das estruturas anteriores ou a qualquer outra estrutura adequada para implementação das técnicas descritas neste documento. Adicionalmente, em alguns aspectos, a funcionalidade descrita neste documento pode ser proporcionada dentro do hardware dedicado e/ou módulos de software configurados para codificar e decodificar, ou incorporados em um codec combinado. Além disso, as técnicas poderiam ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[00148] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone não cabeado, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar os aspectos funcionais de dispositivos configurados para executar as técnicas reveladas, mas não necessariamente requerem realização por diferentes unidades de hardware.
Petição 870190069676, de 23/07/2019, pág. 76/101
71/71
Pelo contrário, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou proporcionadas por uma coleção de unidades de hardware inter-operativas, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequados.
[00149] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das reivindicações seguintes.

Claims (26)

  1. REIVINDICAÇÕES
    1. Método de filtragem de um bloco reconstruído de dados de video, o método compreendendo:
    obter, por um ou mais processadores, amostras reconstruídas de um bloco atual dos dados de vídeo; e seletivamente filtrar, pelo um ou mais processadores, as amostras reconstruídas do bloco atual para gerar um bloco atual filtrado, em que seletivamente filtrar as amostras reconstruídas do bloco atual compreende abster-se de filtrar pelo menos uma amostra reconstruída do bloco atual de modo que o bloco atual filtrado inclua pelo menos uma amostra não filtrada e pelo menos uma amostra filtrada.
  2. 2. Método, de acordo com a reivindicação 1, em que seletivamente filtrar compreende seletivamente filtrar bilateralmente as amostras reconstruídas.
  3. 3. Método, de acordo com a reivindicação 2, em que filtrar bilateralmente uma amostra particular compreende substituir um valor da amostra particular por uma média ponderada do valor da amostra particular e por valores das amostras vizinhas acima, abaixo, à esquerda e à direita da amostra particular e, em que seletivamente filtrar bilateralmente as amostras reconstruídas do bloco atual compreende filtrar bilateralmente pelo menos uma amostra reconstruída do bloco atual, de modo que o bloco atual filtrado inclua pelo menos uma amostra filtrada bilateralmente.
  4. 4. Método, de acordo com a reivindicação 1, em seletivamente filtrar as amostras reconstruídas do bloco
    Petição 870190069676, de 23/07/2019, pág. 78/101
    2/9 atual compreende:
    categorizar, pelo um ou mais processadores, as amostras reconstruídas do bloco atual como a serem filtradas ou a não serem filtradas, em que seletivamente filtrar compreende:
    filtrar amostras reconstruídas do bloco atual que são categorizadas como a serem filtradas; e abster-se de filtrar amostras reconstruídas do bloco atual que são categorizadas como a não serem filtradas.
  5. 5. Método, de acordo com a reivindicação 4, em que categorizar as amostras reconstruídas compreende:
    determinar quais amostras do bloco atual são utilizadas para predição de pelo menos um bloco vizinho;
    categorizar as amostras reconstruídas do bloco atual que são utilizadas para predição de pelo menos um bloco vizinho como a não serem filtradas; e categorizar amostras reconstruídas do bloco atual que não são utilizadas para predição de pelo menos um bloco vizinho como a serem filtradas.
  6. 6. Método, de acordo com a reivindicação 5, em que determinar quais amostras do bloco atual são utilizadas para predição de pelo menos um bloco vizinho compreende:
    em resposta a determinar que um bloco vizinho direito do bloco atual é codificado utilizando predição intra, determinar que as amostras do bloco atual que estão localizadas em uma coluna mais à direita do bloco atual são utilizadas para predição de pelo menos um bloco vizinho; e
    Petição 870190069676, de 23/07/2019, pág. 79/101
    3/9 em resposta a determinar que um bloco vizinho abaixo do bloco atual é codificado utilizando predição intra, determinar que as amostras do bloco atual que estão localizadas em uma fileira inferior do bloco atual são utilizadas para predição de pelo menos um bloco vizinho.
  7. 7. Método, de acordo com a reivindicação 5, em que o bloco atual compreende um bloco croma atual e um bloco luma atual, e em que determinar quais amostras do bloco atual são utilizadas para predição de pelo menos um bloco vizinho compreende:
    em resposta a determinar que um bloco vizinho do bloco croma atual ou um bloco croma correspondente do bloco de luma atual é codificado utilizando um modo de predição de modelo linear de componente cruzado (CCLM), determinar que todas as amostras do bloco atual são utilizadas para predição de pelo menos um bloco vizinho.
  8. 8. Método, de acordo com a reivindicação 4, em que a categorizar as amostras reconstruídas compreende:
    categorizar as amostras reconstruídas do bloco atual que podem ser utilizadas por blocos vizinhos para predição intra como a não serem filtradas; e
    Categorizar as amostras reconstruídas do bloco atual que não podem ser utilizadas por blocos vizinhos para predição intra como a serem filtradas.
  9. 9. 0 Método, de acordo com a reivindicação 4, em que categorizar as amostras reconstruídas compreende:
    Categorizar as amostras reconstruídas do bloco atual que estão localizadas em uma região predefinida do bloco atual como a não serem filtradas; e
    Petição 870190069676, de 23/07/2019, pág. 80/101
    4/9 categorizar as amostras reconstruídas do bloco atual gue não estão localizadas na região pré-definida do bloco atual como a serem filtradas.
  10. 10. Método, de acordo com a reivindicação 9, em que a região predefinida inclui uma coluna mais à direita de amostras do bloco atual e uma fileira inferior de amostras do bloco atual.
  11. 11. Método, de acordo com a reivindicação 1, o método sendo executável em um dispositivo de comunicação
    não cabeada, em que o dispositivo compreende: uma memória configurada para armazenar os dados de vídeo; e um receptor configurado para receber os dados de
    vídeo e armazenar os dados de vídeo na memória.
  12. 12. Método, de acordo com a reivindicação 11, em que o dispositivo de comunicação não cabeada é um telefone celular e os dados de vídeo são recebidos por um receptor e modulados de acordo com um padrão de comunicação celular.
  13. 13. Aparelho para filtrar um bloco reconstruído de dados de vídeo, o aparelho compreendendo:
    uma memória configurada para armazenar dados de vídeo; e um ou mais processadores configurados para:
    obter amostras reconstruídas de um bloco atual dos dados de vídeo; e seletivamente filtrar as amostras reconstruídas do bloco atual para gerar um bloco atual filtrado, em que, para seletivamente filtrar as amostras reconstruídas do bloco atual, o um ou mais processadores
    Petição 870190069676, de 23/07/2019, pág. 81/101
    5/9 são configurados para absterem-se de filtrar pelo menos uma amostra reconstruída do bloco atual de modo que o bloco atual filtrado inclua pelo menos uma amostra não filtrada e pelo menos uma amostra filtrada.
  14. 14. Aparelho, de acordo com a reivindicação 13, em que, para seletivamente filtrar, o um ou mais processadores são configurados para seletivamente filtrar bilateralmente as amostras reconstruídas.
  15. 15. Aparelho, de acordo com a reivindicação 13, em que, para filtrar bilateralmente uma amostra particular, o um ou mais processadores são configurados para substituir um valor da amostra particular por uma média ponderada do valor da amostra particular das amostras vizinhas acima, abaixo, à esquerda e à direita da amostra particular, e em que, para seletivamente filtrar bilateralmente as amostras reconstruídas do bloco atual, o um ou mais processadores são configurados para filtrar bilateralmente pelo menos uma amostra reconstruída do bloco atual de modo que o bloco atual filtrado inclua pelo menos uma amostra filtrada bilateralmente.
  16. 16. Aparelho, de acordo com a reivindicação 13, em que, para seletivamente filtrar as amostras reconstruídas do bloco atual, o um ou mais processadores são configurados para:
    Categorizar as amostras reconstruídas do bloco atual como a serem filtradas ou a não serem filtradas;
    filtrar as amostras reconstruídas do bloco atual que são categorizadas como a serem filtradas; e abster-se de filtrar amostras reconstruídas do
    Petição 870190069676, de 23/07/2019, pág. 82/101
    6/9 bloco atual que são categorizadas como a não serem filtradas.
  17. 17. Aparelho, de acordo com a reivindicação 16, em que, para categorizar as amostras reconstruídas, o um ou mais processadores são configurados para:
    determinar quais amostras do bloco atual são utilizadas para predição de pelo menos um bloco vizinho;
    categorizar as amostras reconstruídas do bloco atual gue são utilizadas para predição de pelo menos um bloco vizinho como a não serem filtradas; e categorizar as amostras reconstruídas do bloco atual que não são utilizadas para predição de pelo menos um bloco vizinho como a serem filtradas.
  18. 18. Aparelho, de acordo com a reivindicação 17, em que, para determinar quais amostras do bloco atual são utilizadas para predição de pelo menos um bloco vizinho, o um ou mais processadores são configurados para:
    determinar, em resposta a determinar que um bloco vizinho à direita do bloco atual é codificado utilizando predição intra, que as amostras do bloco atual que estão localizadas em uma coluna mais à direita do bloco atual são utilizadas para predição de pelo menos um bloco vizinho; e determinar, em resposta a determinar que um bloco vizinho abaixo do bloco atual é codificado utilizando predição intra, que as amostras do bloco atual que estão localizadas em uma fileira inferior do bloco atual são utilizadas para predição de pelo menos um bloco vizinho.
  19. 19. Aparelho, de acordo com a reivindicação 17, em que o bloco atual compreende um bloco croma atual e um
    Petição 870190069676, de 23/07/2019, pág. 83/101
    7/9 bloco luma atual, e em que, para determinar quais amostras do bloco atual são utilizadas para predição de pelo menos um bloco vizinho, o um ou mais processadores são configurados para:
    determinar, em resposta a determinar que um bloco vizinho do bloco croma atual ou um bloco croma correspondente do bloco luma atual é codificado utilizando um modo de predição de modelo linear de componente cruzado (CCLM), que todas as amostras do bloco atual são utilizadas para predição de pelo menos um bloco vizinho.
  20. 20. Aparelho, de acordo com a reivindicação 16, em que, para categorizar as amostras reconstruídas, o um ou mais processadores são configurados para:
    categorizar as amostras reconstruídas do bloco atual gue podem ser utilizadas por blocos vizinhos para predição intra como a não serem filtradas; e categorizar as amostras reconstruídas do bloco atual que não podem ser utilizadas por blocos vizinhos para predição intra como a serem filtradas.
  21. 21. Aparelho, de acordo com a reivindicação 16, em que, para categorizar as amostras reconstruídas, o um ou mais processadores são configurados para:
    categorizar as amostras reconstruídas do bloco atual gue estão localizadas em uma região predefinida do bloco atual como a não serem filtradas; e categorizar as amostras reconstruídas do bloco atual gue não estão localizadas na região predefinida do bloco atual como a serem filtradas.
  22. 22. Aparelho, de acordo com a reivindicação 21,
    Petição 870190069676, de 23/07/2019, pág. 84/101
    8/9 em que a região predefinida inclui uma coluna mais à direita de amostras do bloco atual e uma fileira inferior de amostras do bloco atual.
  23. 23. Aparelho, de acordo com a reivindicação 13, em que o dispositivo é um dispositivo de comunicação não cabeada, adicionalmente compreendendo:
    um receptor configurado para receber um fluxo de bits decodificável para obter as amostras reconstruídas.
  24. 24. Aparelho, de acordo com a reivindicação 23, em que o dispositivo de comunicação não cabeada é um telefone celular e o fluxo de bits é recebido pelo receptor e modulado de acordo com um padrão de comunicação celular.
  25. 25. Aparelho para filtrar um bloco reconstruído de dados de vídeo, o aparelho compreendendo:
    meio para obter amostras reconstruídas de um bloco atual dos dados de vídeo; e meio para seletivamente filtrar as amostras reconstruídas do bloco atual para gerar um bloco atual filtrado, em que o meio para seletivamente filtrar as
    amostras reconstruídas do bloco atual é configurado para abster-se de filtrar pelo menos uma amostra reconstruída do bloco atual de modo que o bloco atual filtrado inclua pelo menos uma amostra não filtrada e pelo menos uma amostra filtrada.
  26. 26. Meio de armazenamento legível por computador armazenando instruções, que quando executadas, fazem com que um ou mais processadores de um dispositivo para filtrar um bloco reconstruído de dados de vídeo:
    obtenha amostras reconstruídas de um bloco atual
    Petição 870190069676, de 23/07/2019, pág. 85/101
    9/9 dos dados de video; e seletivamente filtre as amostras reconstruídas do bloco atual para gerar um bloco atual filtrado, em que as instruções que fazem com que um ou mais processadores seletivamente filtre as amostras reconstruídas do bloco atual compreendem instruções que fazem com que o um ou mais processadores se abstenham-se de filtrar pelo menos uma amostra reconstruída do bloco atual, de modo que o bloco atual filtrado inclua pelo menos uma amostra não filtrada e pelo menos uma amostra filtrada.
BR112019015106-0A 2017-01-27 2018-01-25 Filtros bilaterais em codificação de vídeo com complexidade reduzida BR112019015106A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762451555P 2017-01-27 2017-01-27
US62/451,555 2017-01-27
US15/879,359 2018-01-24
US15/879,359 US10694181B2 (en) 2017-01-27 2018-01-24 Bilateral filters in video coding with reduced complexity
PCT/US2018/015206 WO2018140587A1 (en) 2017-01-27 2018-01-25 Bilateral filters in video coding with reduced complexity

Publications (1)

Publication Number Publication Date
BR112019015106A2 true BR112019015106A2 (pt) 2020-03-10

Family

ID=61189550

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019015106-0A BR112019015106A2 (pt) 2017-01-27 2018-01-25 Filtros bilaterais em codificação de vídeo com complexidade reduzida

Country Status (9)

Country Link
US (1) US10694181B2 (pt)
EP (1) EP3574650A1 (pt)
KR (1) KR20190110548A (pt)
CN (1) CN110169064B (pt)
AU (1) AU2018212665A1 (pt)
BR (1) BR112019015106A2 (pt)
SG (1) SG11201905243YA (pt)
TW (1) TW201832562A (pt)
WO (1) WO2018140587A1 (pt)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10638126B2 (en) * 2017-05-05 2020-04-28 Qualcomm Incorporated Intra reference filter for video coding
GB2567249A (en) * 2017-10-09 2019-04-10 Canon Kk New sample sets and new down-sampling schemes for linear component sample prediction
EP3547686A1 (en) * 2018-03-29 2019-10-02 InterDigital VC Holdings, Inc. Method and apparatus for decoder side prediction based on weighted distortion
US10958928B2 (en) * 2018-04-10 2021-03-23 Qualcomm Incorporated Decoder-side motion vector derivation for video coding
US10805624B2 (en) * 2018-07-16 2020-10-13 Tencent America LLC Determination of parameters of an affine model
TWI814890B (zh) 2018-08-17 2023-09-11 大陸商北京字節跳動網絡技術有限公司 簡化的跨分量預測
US11064196B2 (en) * 2018-09-03 2021-07-13 Qualcomm Incorporated Parametrizable, quantization-noise aware bilateral filter for video coding
US10819979B2 (en) * 2018-09-06 2020-10-27 Tencent America LLC Coupled primary and secondary transform
CN117478883A (zh) 2018-09-12 2024-01-30 北京字节跳动网络技术有限公司 交叉分量线性模型中的尺寸相关的下采样
CN117834862A (zh) 2018-09-20 2024-04-05 Lg电子株式会社 图像解码、编码方法和数据的发送方法及存储介质
JP7479062B2 (ja) * 2018-10-01 2024-05-08 オーピー ソリューションズ, エルエルシー 指数関数的分割の方法およびシステム
US11394961B2 (en) * 2018-10-04 2022-07-19 Lg Electronics Inc. CCLM-based intra-prediction method and apparatus therefor
KR20210087928A (ko) 2018-11-06 2021-07-13 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 인트라 예측을 위한 파라미터 유도의 복잡성 감소
US11178396B2 (en) 2018-11-14 2021-11-16 Tencent America LLC Constrained intra prediction and unified most probable mode list generation
CN113170122B (zh) * 2018-12-01 2023-06-27 北京字节跳动网络技术有限公司 帧内预测的参数推导
KR20230170146A (ko) 2018-12-07 2023-12-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 컨텍스트 기반 인트라 예측
KR20220116357A (ko) * 2018-12-21 2022-08-22 삼성전자주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
KR20200083321A (ko) * 2018-12-28 2020-07-08 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
BR112021014202A2 (pt) 2019-02-01 2021-09-21 Beijing Bytedance Network Technology Co., Ltd. Sinalização de informações de reformulação em malha usando conjuntos de parâmetros
WO2020156526A1 (en) * 2019-02-01 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Interactions between in-loop reshaping and inter coding tools
KR20210123300A (ko) 2019-02-02 2021-10-13 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 관리
AU2020214083B2 (en) 2019-02-02 2023-06-01 Beijing Bytedance Network Technology Co., Ltd. Buffer management for intra block copy in video coding
WO2020171644A1 (ko) * 2019-02-22 2020-08-27 엘지전자 주식회사 영상 코딩 시스템에서 cclm 예측에 기반한 영상 디코딩 방법 및 그 장치
EP3903482A4 (en) 2019-02-22 2022-06-01 Beijing Bytedance Network Technology Co., Ltd. SELECTING ADJACENT SAMPLES FOR INTRA PREDICTION
CA3128769C (en) 2019-02-24 2023-01-24 Beijing Bytedance Network Technology Co., Ltd. Parameter derivation for intra prediction
CN117395439A (zh) 2019-03-01 2024-01-12 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的基于方向的预测
CN117640927A (zh) 2019-03-04 2024-03-01 北京字节跳动网络技术有限公司 视频编解码中的帧内块复制中的实施方式方面
KR20210135502A (ko) 2019-03-08 2021-11-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 처리에서 변형 정보의 시그널링
CN113574889B (zh) 2019-03-14 2024-01-12 北京字节跳动网络技术有限公司 环路整形信息的信令和语法
CN113632469B (zh) 2019-03-23 2022-12-13 北京字节跳动网络技术有限公司 默认的环内整形参数
WO2020192642A1 (en) 2019-03-24 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Conditions in parameter derivation for intra prediction
CN113692741B (zh) * 2019-04-18 2022-12-13 北京字节跳动网络技术有限公司 跨分量模式中的参数推导
BR112021019675A2 (pt) 2019-04-23 2021-12-07 Beijing Bytedance Network Tech Co Ltd Método para processamento de mídia visual, aparelho codificador de vídeo, aparelho decodificador de vídeo, e, mídia legível por computador
CN113632464B (zh) * 2019-05-21 2023-04-28 华为技术有限公司 分量间预测的方法和设备
CN113994697A (zh) 2019-06-22 2022-01-28 北京字节跳动网络技术有限公司 色度残差缩放的语法元素
CN113826403A (zh) * 2019-06-25 2021-12-21 Oppo广东移动通信有限公司 信息处理方法及装置、设备、存储介质
WO2020258056A1 (zh) * 2019-06-25 2020-12-30 北京大学 一种视频图像处理方法、设备及存储介质
CN114827612B (zh) * 2019-06-25 2023-04-11 北京大学 视频图像编码和解码方法、设备及介质
CN114175645B (zh) 2019-07-06 2024-04-12 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的虚拟预测缓冲
JP7460748B2 (ja) 2019-07-07 2024-04-02 北京字節跳動網絡技術有限公司 クロマ残差スケーリングのシグナリング
CA3146391A1 (en) 2019-07-10 2021-01-14 Beijing Bytedance Network Technology Co., Ltd. Sample identification for intra block copy in video coding
EP3981146A4 (en) 2019-07-11 2022-08-03 Beijing Bytedance Network Technology Co., Ltd. BITSTREAM CONFORMITY RESTRICTIONS FOR INTRA-BLOCK COPY IN VIDEO ENCODING
US11438584B2 (en) * 2019-08-16 2022-09-06 Apple Inc. Adaptive bilateral filtering using look-up tables
US11265558B2 (en) * 2019-11-22 2022-03-01 Qualcomm Incorporated Cross-component adaptive loop filter
WO2021141519A2 (en) * 2020-05-26 2021-07-15 Huawei Technologies Co., Ltd. Method and apparatus of high-level syntax for smoothing intra-prediction techniques
US11743459B2 (en) * 2020-09-29 2023-08-29 Qualcomm Incorporated Filtering process for video coding
WO2022108422A1 (ko) * 2020-11-23 2022-05-27 현대자동차주식회사 적응적 참조화소 선택을 이용한 영상 부호화 및 복호화 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
HUP0301368A3 (en) * 2003-05-20 2005-09-28 Amt Advanced Multimedia Techno Method and equipment for compressing motion picture data
US20070171980A1 (en) 2006-01-26 2007-07-26 Yen-Lin Lee Method and Related Apparatus For Decoding Video Streams
US7873224B2 (en) 2006-03-01 2011-01-18 Qualcomm Incorporated Enhanced image/video quality through artifact evaluation
KR101369224B1 (ko) * 2007-03-28 2014-03-05 삼성전자주식회사 움직임 보상 필터링을 이용한 영상 부호화, 복호화 방법 및장치
US7894685B2 (en) * 2008-07-01 2011-02-22 Texas Instruments Incorporated Method and apparatus for reducing ringing artifacts
US8189943B2 (en) 2009-03-17 2012-05-29 Mitsubishi Electric Research Laboratories, Inc. Method for up-sampling depth images
JP5183664B2 (ja) * 2009-10-29 2013-04-17 財團法人工業技術研究院 ビデオ圧縮のためのデブロッキング装置及び方法
KR101681301B1 (ko) * 2010-08-12 2016-12-01 에스케이 텔레콤주식회사 필터링모드 생략가능한 영상 부호화/복호화 방법 및 장치
US20130177078A1 (en) * 2010-09-30 2013-07-11 Electronics And Telecommunications Research Institute Apparatus and method for encoding/decoding video using adaptive prediction block filtering
US9930366B2 (en) * 2011-01-28 2018-03-27 Qualcomm Incorporated Pixel level adaptive intra-smoothing
US20120236936A1 (en) * 2011-03-14 2012-09-20 Segall Christopher A Video coding based on edge determination
US9344729B1 (en) * 2012-07-11 2016-05-17 Google Inc. Selective prediction signal filtering
US9118932B2 (en) * 2013-06-14 2015-08-25 Nvidia Corporation Adaptive filtering mechanism to remove encoding artifacts in video data
US9924175B2 (en) 2014-06-11 2018-03-20 Qualcomm Incorporated Determining application of deblocking filtering to palette coded blocks in video coding
WO2016115981A1 (en) 2015-01-22 2016-07-28 Mediatek Singapore Pte. Ltd. Method of video coding for chroma components
AU2015395514B2 (en) * 2015-05-21 2019-10-10 Huawei Technologies Co., Ltd. Apparatus and method for video motion compensation
WO2016192677A1 (en) * 2015-06-03 2016-12-08 Mediatek Inc. Method and apparatus of error handling for video coding using intra block copy mode
MX2018006091A (es) * 2015-11-17 2018-11-09 Awei Tech Co Ltd Metodo y aparato para filtracion adaptativa de muestras para codificacion de video.

Also Published As

Publication number Publication date
CN110169064B (zh) 2021-05-07
US20180220130A1 (en) 2018-08-02
WO2018140587A1 (en) 2018-08-02
SG11201905243YA (en) 2019-08-27
TW201832562A (zh) 2018-09-01
KR20190110548A (ko) 2019-09-30
CN110169064A (zh) 2019-08-23
US10694181B2 (en) 2020-06-23
AU2018212665A1 (en) 2019-07-04
EP3574650A1 (en) 2019-12-04

Similar Documents

Publication Publication Date Title
BR112019015106A2 (pt) Filtros bilaterais em codificação de vídeo com complexidade reduzida
US11044473B2 (en) Adaptive loop filtering classification in video coding
US10555006B2 (en) Deriving bilateral filter information based on a prediction mode in video coding
US10721469B2 (en) Line buffer reduction for adaptive loop filtering in video coding
AU2019278991B2 (en) Block-based adaptive loop filter (ALF) design and signaling
US20190238845A1 (en) Adaptive loop filtering on deblocking filter results in video coding
TW201838415A (zh) 在視訊寫碼中判定用於雙邊濾波之鄰近樣本
TW201904285A (zh) 在視訊寫碼中之增強的解塊濾波設計
TW201743619A (zh) 在視訊寫碼中適應性迴路濾波中之多個濾波器之混淆
TW201633787A (zh) 寫碼樹單元級可適性迴路濾波器
BR112019010547A2 (pt) indicação de uso de filtro bilateral em codificação de vídeo
TW201817227A (zh) 峰值樣本適應性偏移
BR112021003869A2 (pt) predição temporal de parâmetros de filtro de loop adaptativo com consumo reduzido de memória para codificação de vídeo
AU2018297286A1 (en) Division-free bilateral filter
WO2020132094A1 (en) Adaptive loop filter (alf) index signaling
WO2019200277A1 (en) Hardware-friendly sample adaptive offset (sao) and adaptive loop filter (alf) for video coding
BR112021002990A2 (pt) filtro de desblocagem para codificação e processamento de vídeo
RU2795695C2 (ru) Фильтр устранения блочности для кодирования и обработки видео
TW202041024A (zh) 用於視訊寫碼中具有運動向量差之合併模式之信令傳輸
TW202415068A (zh) 視訊寫碼中之三角合併模式索引之發信

Legal Events

Date Code Title Description
B11A Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing
B11Y Definitive dismissal - extension of time limit for request of examination expired [chapter 11.1.1 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]