BR102012027968A2 - mapas de significância de nível múltiplo para codificação e decodificação - Google Patents

mapas de significância de nível múltiplo para codificação e decodificação Download PDF

Info

Publication number
BR102012027968A2
BR102012027968A2 BR102012027968A BR102012027968A BR102012027968A2 BR 102012027968 A2 BR102012027968 A2 BR 102012027968A2 BR 102012027968 A BR102012027968 A BR 102012027968A BR 102012027968 A BR102012027968 A BR 102012027968A BR 102012027968 A2 BR102012027968 A2 BR 102012027968A2
Authority
BR
Brazil
Prior art keywords
significant coefficient
group
flag
flags
significant
Prior art date
Application number
BR102012027968A
Other languages
English (en)
Other versions
BR102012027968B1 (pt
Inventor
Dake He
Nguyen Nguyen
Tianying Ji
Original Assignee
Blackberry Ltd
Research In Motion Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Blackberry Ltd, Research In Motion Ltd filed Critical Blackberry Ltd
Publication of BR102012027968A2 publication Critical patent/BR102012027968A2/pt
Publication of BR102012027968B1 publication Critical patent/BR102012027968B1/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/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

mapas de signficância de nível múltiplo para codificação e decodificação. são descritos métodos de codificação e decodificação para dados de video nos quais são usados mapas de significância de nível múltiplo nos processos de codificação e decodificação. os sinalizadores de coeficientes significativos que formam o mapa de significância são agrupados em grupos ontíguos, e um sinalizador de grupo de coeficientes significativos significa para cada grupo se aquele grupo contém sinalizadores de coeficientes significativos não-zero. se não existirem sinalizadores de coeficientes significativos não-zero no grupo, então o sinalizador de grupo de 5 coeficientes significativos é fixado em zero. o conjunto de sinalizadores de grupos de coeficientes significativos é codificado no fluxo de bits. todos os sinalizadores de coeficientes significativos que estejam incluídos um grupo que tenha um sinalizador de grupo de coeficientes. o significativos que seja não-zero são codificados no fluxo de bits, enquanto sinalizadores de coeficientes significativos que estejam incluídos em um grupo que tenha um sinalizador de grupo de coeficientes significativos que seja zero não são codificados no fluxo de bits.

Description

MAPAS DE SIGNIFICÂNCIA DE NÍVEL MÚLTIPLO PARA CODIFICAÇÃO E
DECODIFICAÇÃO
AVISO DE DIREITOS AUTORAIS
Uma parte da especificação deste documento e materiais anexos contém material ao qual é feito uma reivindicação de direitos autorais. O proprietário dos direitos autorais não tem objeções quanto à reprodução por fax por qualquer pessoa do documento de patente ou da especificação de patente, conforme consta nos arquivos ou registros da Repartição de Patentes e Marcas, mas reserva todos os outros direitos autorais quaisquer que sejam.
CAMPO O presente pedido de patente refere-se geralmente â compressão de dados e, mais especificamente, a métodos e dispositivos para codificação e decodificação de vídeo mediante utilização de mapas de significância de nível múltiplo.
ANTECEDENTES
Compressão de dados ocorre em diversos contextos. É muito comumente utilizada em comunicações e redes de computadores para armazenar, transmitir e reproduzir informações eficientemente. Encontra aplicação específica na codificação de imagens, áudio e vídeo. O vídeo apresenta um desafio significativo à compressão de dados devido à grande quantidade de dados necessários para cada quadro de vídeo e à velocidade com a qual codificação e decodificação frequentemente necessita ocorrer. O atual estado da técnica para codificação de vídeo é o padrão de vídeo ITU-T H.264/AVC. Este define diversos diferentes perfis para diferentes aplicações, que incluem perfil Principal, perfil Basal e outros. Um padrão de codificação de video de geração seguinte está atualmente em desenvolvimento por intermédio de uma iniciativa conjunta de MPEG-ITU: Codificação de Video de Alta Eficiência (HEVC).
Existem diversos padrões para codificação/ decodificação de imagens e videos, incluindo H.264, que utilizam processos de codificação baseados em blocos. Nestes processos, a imagem ou quadro ê dividido em blocos, tipicamente 4x4 ou 8x8, e os blocos são espectralmente transformados em coeficientes, quantizados e codificados por entropia. Em muitos casos, os dados sendo transformados não são os reais dados de pixels, mas os dados residuais a seguir a uma operação de predição. As predições podem ser intraquadros, isto é, bloco-a-bloco dentro do quadro/imagem, ou interquadros, isto ê, entre quadros (também chamada predição de movimento). Espera-se que o HEVC' (pode também ser chamado H.265) possua também estas características .
Quando transformando espectralmente dados residuais, muitos destes padrões prescrevem o uso de uma transformação discreta de cossenos (DCT) ou alguma variante desta. Os coeficientes da DCT resultantes são em seguida quantizados mediante utilização de um quantizador para produzir coeficientes quantizados no domínio da transformação, ou índices. O bloco ou matriz de coeficientes quantizados no domínio da transformação (algumas vezes designado "unidade de transformação") é em seguida codificado por entropia mediante utilização de um modelo específico de contexto. Em H.264/AVC e no trabalho atualmente em desenvolvimento para HEVC, os coeficientes quantizados transformados são codificados por (a) codificação de uma posição de último coeficiente significativo que indica a localização do último coeficiente não-zero no bloco, (b) codificação de um mapa de signif icância que indica as posições no bloco (diferentes da última posição de coeficientes significativos) que contêm coeficientes não-zero, (c) codificação das magnitudes dos coeficientes não-zero, e (d) codificação dos sinais dos coeficientes não-zero. Esta codificação dos coeficientes quantizados da transformação frequentemente ocupa 30 a 80% dos dados codificados no fluxo de bits.
As unidades de transformação são geralmente NxN. Dimensões comuns incluem 4x4, 8x8, 16x16 e 32x32, embora sejam possíveis outras dimensões. A codificação por entropia dos símbolos no mapa de significância é baseada em um modelo de contexto. No caso de um bloco de luminância ou crominância ou unidade de transformação (TU) 4x4, um contexto separado é associado a cada posição de coeficientes na TU. Isto ê, o codificador e o decodificador rastreiam um total de 30 (excluindo as posições do canto inferior direito) contextos separados para TUs de luminância e crominância 4x4. As TUs 8x8 são particionadas (conceitualmente para a finalidade de associação de contexto) em blocos 2x2 tais que um contexto distinto está associado a cada bloco 2x2 na TU 8x8. Consequentemente, o codificador e o decodificador rastreiam um total de 16+16=32 contextos para as TUs de luminância e crominância 8x8. Isto significa que o codificador e o decodificador rastreiam e procuram 62 diferentes contextos durante a codificação e decodificação do mapa de significância. Quando são consideradas TUs 16x16 e TUs 32x32, o número total de contextos distintos envolvidos é 88 . Entre os 26 contextos adicionais, 13 são para TUs de luminância e 13 são para TUs de crominância. A atribuição dos 13 contextos às posições de coeficientes em uma TU 16x16 ou 32x32 ê como segue. Seja (r,c) uma posição na TU, onde 0<=r,c< = 15 se a TU for de dimensões 16x16, e 0<=r,c<=31 se de dimensões 32x32. Então três contextos distintos são atribuídos às três posições (0,0), (0,1), (1,0) no canto superior esquerdo que inclui a posição DC (0,0); cinco contextos distintos são atribuídos a posições na região {(r,c):2<=r+c<5}; e os últimos cinco contextos distintos são atribuídos a todas as posições remanescentes. Exceto para os três primeiros contextos (0,0), (0,1), e (1,0), a obtenção do contexto para uma posição na região {(r,c):2<=r+c<5} depende do seu adjacente inferior direito. Seja s(r,c) o sinalizador de signif icância de um coeficiente na posição (r,c), isto é, s(r,c)=1 se o coeficiente não for zero e s(r,c)=0 nos outros casos. O contexto para posição (r,c) é igual a min(s (r+1,c)+s (r,c+1)+s(r+2,c)+s(r,c+2)+s(r+l,c + l) ,4) , onde minta,b) significa o menor valor entre a e b. O contexto de uma posição (r,c) na região remanescente { (r,c) :r+c> = 5} é obtido de modo similar.
Os contextos para mapas de significância 4x4 e 8x8 são determinados pela posição de bits. Os contextos para mapas de significância 16x16 e 32x32 são principalmente determinados pelos valores dos bits adjacentes. A determinação do contexto para os mapas de significância 16x16 e 32x32 é razoavelmente intensa computacionalmente, uma vez que em muitos casos o processador determina o contexto examinando os valores dos sinalizadores adjacentes significativos, o que implica operações dispendiosas de acesso à memória.
BREVE RESUMO O presente pedido de patente descreve métodos e codificadores/decodificadores para codificação e decodificação de mapas de significâncía com codificação ou decodificação de contexto adaptativo. O codificador e decodificador utilizam mapas de significância de nível múltiplo. Em ao menos um caso, os mapas de nível múltiplo são usados com grandes unidades de transformação, tais como TUS 16x16 e 32x32.
Em um aspecto, o presente pedido de patente descreve um método de reconstrução de sinalizadores de coeficientes significativos para uma unidade de transformação a partir de um fluxo de bits de dados codificados. O método inclui reconstruir sinalizadores de grupos de coeficientes significativos, onde cada sinalizador de grupo de coeficientes significativos corresponde a um grupo respectivo de sinalizadores de coeficientes significativos; e reconstruir cada sinalizador de coeficientes significativos mediante decodificação do sinalizador de coeficientes significativos a partir do fluxo de bits se aquele sinalizador de coeficientes significativos estiver em um grupo que tenha um correspondente sinalizador de grupo de coeficientes significativos que não seja zero, e fixar o sinalizador de coeficientes significativos em zero, se aquele sinalizador de coeficientes significativos estiver em um grupo que tenha um correspondente sinalizador de grupo de coeficientes significativos que seja zero.
Em outro aspecto, o presente pedido de patente descreve um método para codificação de sinalizadores de coeficientes significativos para uma unidade de transformação. O método inclui codificar sinalizadores de grupos de coeficientes significativos, onde cada sinalizador de grupo de coeficientes significativos corresponde a um grupo respectivo de sinalizadores de coeficientes significativos, e onde o sinalizador de grupo de coeficientes significativos é fixado em zero para indicar que o grupo correspondente não contém sinalizadores de coeficientes significativos não-zero; e, para cada um dos sinalizadores de coeficientes significativos, codificar o sinalizador de coeficientes significativos se aquele sinalizador de coeficientes significativos estiver em um dos grupos para o qual o seu sinalizador de grupo de coeficientes significativos correspondente for não-zero, e não codificar o sinalizador de coeficientes significativos se aquele sinalizador de coeficientes significativos estiver em um dos grupos para o qual o sinalizador de grupo de coeficientes significativos correspondente for zero.
Em outro aspecto, a reconstrução dos sinalizadores de coeficientes significativos é realizada em uma ordem prescrita, tal como uma ordem de varredura direta ou inversa. Em outro aspecto, a reconstrução dos sinalizadores de grupos de coeficientes significativos é realizada em uma ordem prescrita, a qual pode ser a mesma ordem prescrita usada com a reconstrução dos sinalizadores de coeficientes significativos, tal como ordem de varredura direta ou inversa .
Em um aspecto, um sinalizador de grupo de coeficientes significativos é fixado em zero se todos os sinalizadores de coeficientes significativos no grupo correspondente forem zero. Em outro aspecto, um sinalizador de grupo de coeficientes significativos é não-zero se ao menos um sinalizador de coeficientes significativos no grupo correspondente for não-zero. Em outro aspecto, um caso especial pode resultar em um sinalizador de grupo de coeficientes significativos ser não-zero mesmo se todos os sinalizadores de coeficientes significativos no grupo correspondente forem zero, em cujo caso o decodificador decodificará todos os sinalizadores de coeficientes significativos de valor zero para aquele grupo correspondente a partir do fluxo de bits.
Em ainda um aspecto adicional, o presente pedido de patente descreve um método de reconstrução de sinalizadores de coeficientes significativos para uma unidade de transformação a partir de um fluxo de bits de dados codificados. O método inclui decodificar sinalizadores de grupos de coeficientes significativos a partir do fluxo de bits, onde cada sinalizador de grupo de coeficientes significativos corresponde a um grupo respectivo de sinalizadores de coeficientes significativos, e onde cada sinalizador de grupo de coeficientes significativos é zero se aquele grupo correspondente não contiver sinalizadores de coeficientes significativos não-zero; e, para cada sinalizador de grupo de coeficientes significativos, decodificar sinalizadores de coeficientes significativos para aquele grupo correspondente de sinalizadores de coeficientes significativos a partir do fluxo de bits se aquele sinalizador de grupo de coeficientes significativos for não-zero e, caso contrário, fixar todos os sinalizadores de coeficientes significativos naquele grupo correspondente de sinalizadores de coeficientes significativos em zero.
Em ainda outro aspecto, o presente pedido de patente descreve um método de reconstrução de sinalizadores de coeficientes significativos para uma unidade de transformação a partir de um fluxo de bits de dados codificados, onde a unidade de transformação é particionada em grupos não-sobrepostos de sinalizadores de coeficientes significativos. O método inclui reconstruir sinalizadores de grupos de coeficientes significativos, onde cada sinalizador de grupo de coeficientes significativos corresponde a um grupo respectivo de sinalizadores de coeficientes significativos, mediante fixação do valor de ao menos um sinalizado de grupo de coeficientes significativos em 1,- e reconstruir cada sinalizador de coeficientes significativos mediante decodificação do sinalizador de coeficientes significativos a partir do fluxo de bits se aquele sinalizador de coeficientes significativos estiver em um grupo que tenha sinalizador de grupo de coeficientes significativos correspondente que não seja zero, e fixar o sinalizador de coeficientes significativos em zero, se aquele sinalizador de coeficientes significativos estiver em um grupo que tenha sinalizador de grupo de coeficientes significativos que seja zero.
Em um aspecto adicional, o presente pedido de patente descreve um método para codificação de sinalizadores de coeficientes significativos para uma unidade de transformação, onde a unidade de transformação é particionada em grupos não-sobrepostos de sinalizadores de coeficientes significativos. O método inclui codificar sinalizadores de grupos de coeficientes significativos, onde cada sinalizador de grupo de coeficientes significativos corresponde a um grupo respectivo dos grupos de sinalizadores de coeficientes significativos, e onde o sinalizador de grupo de coeficientes significativos é fixado em zero para indicar que aquele grupo correspondente não contém sinalizadores de coeficientes significativos não-zeros, e onde a codificação exclui ao menos um sinalizador de grupo inferido para ser 1 independentemente de o seu grupo correspondente conter sinalizadores de coeficientes significativos não-zeros. O método inclui ainda, para cada um dos sinalizadores de coeficientes significativos, codificar o sinalizador de coeficientes significativos se aquele sinalizador de coeficientes significativos estiver em um dos grupos para o qual o seu sinalizador de grupo de coeficientes significativos correspondente for não-zero, e não codificar o sinalizador de coeficientes significativos se aquele sinalizador de coeficientes significativos estiver em um dos grupos para o qual o sinalizador de grupo de coeficientes significativos correspondente for zero.
Em um aspecto adicional, o presente pedido de patente descreve codificadores e decodificadores configurados para implementar tais métodos de codificação e decodificação.
Em ainda um aspecto adicional, o presente pedido de patente descreve meios legíveis por computador não-transitórios que armazenam instruções de programa executáveis por computador que, quando executados, configuram um processador a realizar os métodos descritos de codificação e/ou decodificação.
Outros aspectos e características do presente pedido de patente serão entendidos por aqueles versados na técnica a partir de uma análise da descrição a seguir de exemplos em conjunto com as figuras anexas.
BREVE DESCRIÇÃO DOS DESENHOS
Será agora feita referência, a título de exemplo, aos desenhos anexos que mostram modalidades exemplificativas do presente pedido de patente, e nos quais: a Figura 1 mostra, em forma de diagrama de blocos, um codificador para codificação de vídeo; a Figura 2 mostra, em forma de diagrama de blocos, um decodificador para decodificação de vídeo; a Figura 3 mostra uma unidade de transformação exemplificativa que contém coeficientes quantizados no domínio da transformação; a Figura 4 mostra um mapa de significância exemplificativo que contém sinalizadores de coeficientes significativos para a unidade de transformação da Figura 3; a Figura 5 mostra um mapa de significância exemplificativo LI que contém sinalizadores de grupos de coeficientes significativos para o mapa de significância da Figura 4; a Figura 6 mostra, em forma de fluxograma, um método de codificação exemplificativo de sinalizadores de coeficientes significativos,· a Figura 7 mostra, em forma de fluxograma, um método exemplif icativo para reconstrução de um mapa de significância a partir de dados codificados; a Figura 8 mostra, em forma de fluxograma, um processo exemplificativo para decodificação e reconstrução de sinalizadores de grupos de coeficientes significativos; a Figura 9 mostra, em forma de fluxograma, um processo exemplificativo de quantização otimizada de taxa de distorção para codificação de mapa de significância de nível múltiplo; a Figura 10 mostra o mapa de significância exemplif icativo LO da Figura 4 após aplicação de RDOQ de LI; a Figura 11 mostra o mapa de significância LI correspondente ao mapa de significância LO da Figura 10, após aplicação de RDOQ de Ll; a Figura 12 mostra um diagrama de blocos simplificado de uma modalidade exemplificativa de um codificador; e a Figura 13 mostra um diagrama de blocos simplificado de uma modalidade exemplificativa de um decodificador.
Numerais de referência similares podem ter sido usados em diferentes figuras para representar componentes similares.
DESCRIÇÃO DE MODALIDADES EXEMPLIFICATIVAS
Na descrição que se segue, algumas modalidades exemplificativas são descritas com referência ao padrão H.264 para codificação de vídeo e/ou ao padrão HEVC em desenvolvimento. Aqueles versados na técnica entenderão que o presente pedido de patente não está limitado a H.264/AVC ou HEVC, mas pode ser aplicável a outros padrões de codificação/decodificação de vídeo, que incluem possíveis futuros padrões, padrões de múltipla visão, padrões escalonáveis de codificação de vídeo, e padrões reconfigurãveis de codificação de vídeo.
Na descrição que se segue, quando se fizer referência a vídeo ou imagens, os termos quadro, figura, fatia, ladrilho e grupo retangular de fatias podem ser usados de modo um tanto intercambiãvel. Aqueles versados na técnica entenderão que, no caso do padrão H.264, um quadro pode conter uma ou mais fatias. Será também entendido que algumas operações de codificação/decodificação são realizadas em uma base de quadro-a-quadro, algumas são realizadas em uma base de fatia-a-fatia, algumas figura-a-figura, algumas ladrilho-a-ladrilho, e algumas por grupo retangular de fatias, dependendo dos requisitos ou terminologia específicos do padrão de codificação de imagem ou vídeo aplicável. Em qualquer modalidade específica, o padrão de codificação de imagem ou video aplicável pode determinar se as operações descritas abaixo são realizadas em conexão com quadros e/ou fatias e/ou figuras e/ou ladrilhos e/ou grupos retangulares de fatias, conforme for o caso. Consequentemente, aqueles versados na técnica entenderão, ã luz da presente especificação, se operações ou processos específicos descritos aqui e referências específicas a quadros, fatias, figuras, ladrilhos, grupos retangulares de fatias são aplicáveis a quadros, fatias, figuras, ladrilhos, grupos retangulares de fatias, ou a alguns ou todos destes para uma dada modalidade. Isto também se aplica a unidades de transformação, unidades de codificação, grupos de unidades de codificação, etc., como ficará evidente à luz da descrição abaixo. O presente pedido de patente refere-se a mapas de significância. Um mapa de significância é um bloco, matriz ou grupo de sinalizadores que mapeia, ou corresponde a, uma unidade de transformação. Cada sinalizador indica se a posição correspondente na unidade de transformação contêm ou não um coeficiente não-zero. Em padrões atuais, estes sinalizadores podem ser designados sinalizadores de coeficientes significativos. Em padrões atuais, existe um sinalizador por coeficiente e o sinalizador ê um bit que é zero se o coeficiente correspondente for zero e é fixado em um se o coeficiente correspondente não for zero. O termo "mapa de significância" como usado aqui destina-se a referir-se a uma matriz ou conjunto ordenado de sinalizadores de coeficientes significativos para uma unidade de transformação, como será entendido a partir da descrição abaixo. É feita agora referência à Figura 1, a qual mostra, em uma forma de diagrama de blocos, um codificador 10 para codificação de vídeo. É também feita referência à Figura 2, a qual mostra um diagrama de blocos de um decodificador 50 para decodificação de vídeo. Será entendido que o codificador 10 e o decodificador 50 descritos aqui podem ser individualmente implementados em um dispositivo de computação de aplicação específica ou de uso geral, o qual contenha um ou mais elementos de processamento e memória. As operações realizadas pelo codificador 10 ou decodificador 50, conforme o caso, podem ser implementadas por meio de circuitos integrados de aplicação específica, por exemplo, ou por meio de instruções de programa armazenadas executáveis por um processador de uso geral. O dispositivo pode incluir software adicional, incluindo, por exemplo, um sistema operacional para controlar funções básicas de dispositivo. A gama de dispositivos e plataformas dentro dos quais o codificador 10 ou decodificador 50 podem ser implementados será entendida por aqueles versados na técnica, tendo em conta a descrição a seguir. O codificador 10 recebe uma fonte de vídeo 12 e produz um fluxo de bits codificados 14. O decodificador 50 recebe o fluxo de bits codificados 14 e envia um quadro de video decodificado 16. O codificador 10 e o decodificador 50 podem ser configurados para operar em conformidade com diversos padrões de compressão de vídeo. Por exemplo, o codificador 10 e o decodificador 50 podem ser compatíveis com H.264/AVC. Em outras modalidades, o codificador 10 e o decodificador 50 podem ser compatíveis com outros padrões de compressão de video, incluindo evoluções do padrão H.264/AVC, tal como HEVC. O codificador 10 inclui um preditor espacial 21, um seletor de modo de codificação 20, processador de transformação 22, quantizador 24, e codificador de entropia 26. Como será entendido por aqueles versados na técnica, o seletor de modo de codificação 20 determina o modo adequado de codificação para a fonte de vídeo, por exemplo, se o quadro/fatia de objeto é do tipo I, P, ou B, e se unidades específicas de codificação (por exemplo, macroblocos, unidades de codificação, etc.) dentro do quadro/fatia são inter ou intra codificadas. O processador de transformação 22 realiza uma transformação sobre os dados de domínio espacial. Em particular, o processador de transformação 22 aplica uma transformação baseada em blocos para converter dados de domínio espacial em componentes espectrais. Por exemplo, em muitas modalidades é usada uma transformação discreta de cossenos (DCT). Outras transformações, tais como uma transformação discreta de senos ou outras podem ser usadas em alguns casos. A transformação baseada em blocos é realizada em uma base de unidade de codificação, macrobloco ou sub-bloco, dependendo da dimensão dos macroblocos ou unidades de codificação. No padrão H.264, por exemplo, um macrobloco típico 16x16 contêm dezesseis blocos de transformação 4x4 e o processo DCT ê realizado nos blocos 4x4. Em alguns casos, os blocos de transformação podem ser 8x8, significando que existem quatro blocos de transformação por macrobloco. Em ainda outros casos, os blocos de transformação podem ter outras dimensões. Em alguns casos, um macrobloco 16x16 pode incluir uma combinação sem sobreposição de blocos de transformação 4x4 e 8x8 . A aplicação da transformação baseada em blocos a um bloco de dados de pixels resulta em um conjunto de coeficientes no domínio da transformação. Um "conjunto" neste contexto é um conjunto ordenado no qual os coeficientes têm posições de coeficientes. Em alguns casos o conjunto de coeficientes no domínio da transformação pode ser considerado como um "bloco" ou matriz de coeficientes. Na descrição deste documento as frases um "conjunto de coeficientes no domínio da transformação" ou um "bloco de coeficientes no domínio da transformação" são usadas de modo intercambiável e destinam-se a indicar um conjunto ordenado de coeficientes no domínio da transformação. O conjunto de coeficientes no domínio da transformação é quantizado pelo quantizador 24 . Os coeficientes quantizados e informações associadas são em seguida codificados pelo codificador de entropia 26. O bloco ou matriz de coeficientes no domínio da transformação quantizados pode ser designado aqui "unidade de transformação".
Quadros/fatias intracodifiçados (isto ê, tipo I) são codificados sem referência a outros quadros/fatias. Em outras palavras, não utilizam predição temporal. Contudo, quadros intracodifiçados dependem de predição espacial dentro do quadro/fatia, como ilustrado na Figura 1 pelo preditor espacial 21. Isto é, quando codificando um bloco especifico, os dados no bloco podem ser comparados aos dados de pixels próximos dentro de blocos já codificados para aquele quadro/fatia. Utilizando um algoritmo de predição, os dados de fonte do bloco podem ser convertidos em dados residuais. O processador de transformação 22 codifica em seguida os dados residuais. H.264, por exemplo, prescreve nove modos de predição espacial para blocos de transformação 4x4. Em algumas modalidades, cada um dos nove modos pode ser usado para processar independentemente um bloco, e então otimização de taxa de distorção é usada para selecionar o melhor modo. O padrão H.264 também prescreve o uso de predição/compensação de movimento para tirar proveito da predição temporal. Consequentemente, o codificador 10 tem uma malha de realimentação que inclui um dequantizador 28, processador de transformação inversa 30, e processador de desbloqueio 32. O processador de desbloqueio 32 pode incluir um processador de desbloqueio e um processador de filtragem. Estes elementos espelham o processo de decodificação implementado pelo decodificador 50 para reproduzir o quadro/fatia. Um armazenador de quadros 34 é usado para armazenar os quadros reproduzidos. Deste modo, a predição de movimento é baseada no que serão os quadros reconstruídos no decodificador 50 e não nos quadros originais, os quais podem diferir dos quadros reconstruídos devido à compressão com perdas envolvida na codificação/decodificação. Um preditor de movimento 36 utiliza os quadros/fatias armazenados no armazenador de quadros 34 como quadros/fatias de fonte para comparação com um quadro corrente com a finalidade de identificar blocos similares. Consequentemente, para macroblocos ou unidades de codificação aos quais é aplicada predição de movimento, os "dados de fonte" que o processador de transformação 22 codifica são os dados residuais que saem do processo de predição de movimento. Por exemplo, podem incluir informações referentes ao quadro de referência, um deslocamento espacial ou "vetor de movimento", e dados residuais de pixels que representam as diferenças (se existirem) entre o bloco de referência e o bloco corrente. Informações referentes ao quadro de referência e/ou vetor de movimento podem não ser processadas pelo processador de transformação 22 e/ou quantizador 24, mas ao invés podem ser fornecidas ao codificador de entropia 26 para codificação como parte do fluxo de bits junto com os coeficientes quantizados.
Aqueles versados na técnica entenderão os detalhes e possíveis variações para implementação de codificadores de vídeo. O decodificador 50 inclui um decodificador de entropia 52, dequantizador 54, processador de transformação inversa 56, compensador espacial 57, e processador de desbloqueio 60. O processador de desbloqueio 60 pode incluir processadores de desbloqueio e filtragem. Um buffer de quadros 58 fornece quadros reconstruídos para utilização por um compensador de movimento 62 na aplicação de compensação de movimento. O compensador espacial 57 representa a operação de recuperação dos dados de vídeo para um bloco intracodifiçado específico proveniente de um bloco previamente decodificado. O fluxo de bits 14 é recebido e decodificado pelo decodificador de entropia 52 para recuperar os coeficientes quantizados. Informações secundárias podem também ser recuperadas durante o processo de decodificação por entropia, algumas das quais podem ser fornecidas à malha de compensação de movimento para uso na compensação de movimento, se aplicável. Por exemplo, o decodificador de entropia 52 pode recuperar informações de vetores de movimento e/ou quadros de referência para macroblocos intercodifiçados.
Os coeficientes quantizados são em seguida dequantizados pelo dequantizador 54 para produzir os coeficientes no domínio da transformação, os quais são em seguida submetidos a uma transformação inversa pelo processador de transformação inversa 56 para recriar os "dados de vídeo". Será entendido que, em alguns casos, tal como com um macrobloco intracodifiçado ou unidade de codificação, os "dados de vídeo" recriados são os dados residuais para uso em compensação espacial em relação a um bloco previamente decodificado dentro do quadro. O compensador espacial 57 gera os dados de vídeo a partir dos dados residuais e dados de pixels provenientes de um bloco previamente decodificado. Em outros casos, tais como macroblocos intercodifiçados ou unidades de codificação, os "dados de vídeo" recriados a partir do processador de transformação inversa 56 são os dados residuais para uso em compensação de movimento em relação a um bloco de referência proveniente de um quadro diferente. Ambas as compensações espacial e de movimento podem ser designadas aqui "operações de predição". O compensador de movimento 62 localiza um bloco de referência dentro do buffer de quadros 58 especificado para um macrobloco intercodifiçado ou unidade de codificação específica. O mesmo faz isto baseado nas informações de quadro de referência e vetor de movimento especificadas para o macrobloco intercodifiçado ou unidade de codificação. Em seguida aplica os dados de pixels de bloco de referência para combinação com os dados residuais para chegar aos dados de vídeo reconstruídos para aquele macrobloco/unidade de codificação.
Um processo de desbloqueio/filtragem pode em seguida ser aplicado a um quadro/fatia reconstruído, como indicado pelo processador de desbloqueio 60. Após desbloqueio/ filtragem, o quadro/fatia é enviado como o quadro de vídeo decodificado 16, por exemplo, para exibição em um dispositivo de visualização. Será entendido que a máquina de reprodução de vídeo, tal como um computador, conversor, reprodutor de DVD ou Blu-Ray, e/ou dispositivo portátil móvel, pode armazenar quadros decodificados em uma memória antes de visualização em um dispositivo de saida. É esperado que codificadores e decodificadores compatíveis com HEVC tenham muitas destas mesmas ou similares características.
Codificação de Mapa de Signíficância Como observado acima, a codificação por entropia de um bloco ou conjunto de coeficientes quantizados no domínio da transformação inclui codificação do mapa de signíficância (por exemplo, um conjunto de sinalizadores de coeficientes significativos) para aquele bloco ou conjunto de coeficientes quantizados no domínio da transformação. O mapa de signíficância é um mapeamento binário do bloco que indica em quais posições (diferentes da última posição) aparecem coeficientes não-zero. O bloco pode ter determinadas características às quais está associado. Por exemplo, pode ser proveniente de uma fatia intracodificada ou uma fatia intercodif içada. Pode ser um bloco de luminância ou um bloco de cromínância. O valor QP para a fatia pode variar de fatia para fatia. Todos estes fatores podem ter um impacto sobre o melhor modo para codificar por entropia o mapa de signíficância. O mapa de signíficância é convertido em um vetor de acordo com a ordem de varredura (a qual pode ser vertical, horizontal, diagonal, ziguezague, ou qualquer outra ordem de varredura prescrita pelo padrão de codificação aplicável). A varredura é tipicamente realizada em ordem "inversa", isto é, começando com o último coeficiente significativo e manipulando para trás através do mapa de significância em ordem inversa de varredura até que o sinalizador em [0,0] seja alcançado. Cada sinalizador de coeficientes significativos é em seguida codificado por entropia mediante utilização do esquema de codificação de contexto adaptativo aplicável. Por exemplo, em muitas aplicações pode ser usado um esquema de codificação aritmético binário de contexto adaptativo (CABAC). Outras implementações podem utilizar outras codificações de contexto adaptativo com binarização. Exemplos incluem codificação aritmética binária (BAC), codificação variável-para-variãvel (V2V) , e codificação de extensão variável-para-fixa (V2F). Com mapas 4x4 e 8x8, um contexto é atribuído a cada posição de bits. Quando codificando o bit (sinalizador de coeficientes significativos) naquela posição de bits, o contexto atribuído e a historia do contexto para aquele ponto determinam a probabilidade estimada de um símbolo menos provável (LPS) (ou em algumas implementações um símbolo mais provável (MPS)) .
Em codificadores de vídeo atuais, a atribuição de contexto é pré-determinada tanto para o codificador como para o decodif icador. Por exemplo, com um bloco de luminância 4x4, o atual projeto de padrão HEVC prescreve que cada posição de bits no mapa de significância 4x4 tenha um contexto único. Excluindo a última posição, isto significa que 15 contextos são rastreados para codificação de mapas de signif icância de luminância 4x4. Para cada posição de bits, o contexto atribuído àquela posição determina a probabilidade estimada associada a um LPS naquela posição. O valor de bit real é em seguida codificado mediante utilização daquela probabilidade estimada. Finalmente, o contexto atribuído àquela posição é atualizado com base no valor de bit real. No decodificador, os dados codificados são decodificados mediante utilização do mesmo modelo de contexto. Um contexto para cada posição de bits é rastreado e usado para determinar a probabilidade estimada para decodificar dados para recuperar bits para aquela posição.
Com mapas de significância 16x16 e 32x32, o contexto para um significativo é (na sua maior parte) baseado nos valores de sinalizadores de coeficientes significativos adjacentes. Entre os 13 contextos usados para mapas de significância 16x16 e 32x32, existem alguns contextos dedicados à posição de bits em [0,0] e a posições de bits adjacentes, mas a maioria dos sinalizadores de coeficientes significativos toma um dos cinco contextos que dependem dos valores cumulativos de sinalizadores de coeficientes significativos adjacentes. Nestes casos, a determinação do contexto corrente para um sinalizador de coeficientes significativos depende da determinação e soma dos valores dos sinalizadores de coeficientes significativos em localizações adjacentes (tipicamente cinco localizações, mas poderíam ser mais ou menos em alguns casos) . Isto envolve acessos múltiplos de memória, os quais podem ser dispendiosos em requisitos de largura de banda de memória. Além disso, em muitos casos os mapas de significância 16x16 e 32x32 contêm um grande número de zeros. Consequentemente, existe um custo substancial envolvido na codificação e transmissão de grandes mapas que têm poucos valores de coeficientes.
De acordo com um aspecto do presente pedido de patente, o codificador e decodificador utilizam mapas de significância de nível múltiplo para algumas unidades de transformação. Nos exemplos descritos abaixo, os mapas de significância de nivel múltiplo são usados para unidades de transformação de dimensões 16x16 e 32x32,- contudo, será entendido que aqueles mapas podem ser usados para unidades de transformação 8x8 ou 64x64 ou outras dimensões em a1gumas modalidades.
Os sinalizadores de coeficientes significativos são agrupados. Cada sinalizador de coeficientes significativos está incluído em um dos grupos. Para simplicidade, em muitas modalidades os grupos são formados pela divisão ou partição (conceituai) da estrutura de unidade de transformação em blocos. Por exemplo, um mapa 16x16 pode ser dividido em blocos 4x4 cada um contendo dezesseis das posições de coeficientes. Um mapa 32x32 pode ser dividido em blocos 8x8 cada um contendo sessenta e quatro das posições de coeficientes. Os sinalizadores de coeficientes significativos são em seguida agrupados com base em que estejam incluídos nestes blocos definidos na estrutura de matriz. A Figura 3 mostra uma unidade exemplificativa de transformação 16x16 100 (a matriz de coeficientes quantizados no domínio da transformação). Para fins de indexação, a posição de bits dentro da unidade de transformação pode ser especificada por [cC,yC], onde xC = 0, 1, 2, ... 15 e yC = 0, 1, 2, ... 15. Usando (por exemplo) uma ordem de varredura diagonal, será observado que o último coeficiente significativo neste exemplo está em [12,10], como indicado pelo numeral de referência 112. É também feita referência agora à Figura 4, a qual mostra um mapa de significância exemplificativo 102. O mapa de significância 102 contém os sinalizadores de coeficientes significativos que são gerados a partir da unidade de transformação exemplificativa como mostrado na Figura 4. Será observado que um sinalizador de coeficientes significativos aparece em cada posição de bits na ordem de varredura desde [0,0] até, mas excluindo, o último coeficiente significativo em [12,10]. O sinalizador de coeficientes significativos em cada posição de bits para a qual existe um coeficiente não-zero na unidade de transformação 10 0 ê fixado em 1, enquanto que cada sinalizador de coeficientes significativos em cada posição de bits para a qual existe um coeficiente zero ê fixado em zero. o mapa de signif icância 102, isto é, o conjunto de sina.lizadores de coeficientes significativos, pode ser agrupado com base em uma divisão uniforme da estrutura da unidade de transformação em blocos contíguos em uma modalidade. A dimensão da unidade de transformação pode determinar a dimensão dos blocos. No caso de uma unidade de transformação 16x16, os blocos podem ser 4x4 em algumas modalidades. Os agrupamentos são ilustrados na Figura 4 pelas linhas que demarcam os blocos 4x4 . Uma unidade de transformação maior, tal como uma unidade de transformação 32x32 pode ter os seus sinalizadores de coeficientes significativos agrupados em blocos 4x4, blocos 8x8, ou blocos contíguos de outras dimensões.
Embora os exemplos dados aqui utilizem grupos definidos como blocos quadrados contíguos para simplicidade, o presente pedido de patente não está limitado a grupos quadrados. Grupos podem ser formados como blocos retangulares em algumas modalidades. Em ainda outras modalidades, podem ser usados outros formatos. Por exemplo, com uma ordem de varredura diagonal, pode ser vantajoso utilizar grupos formados a partir de fatias diagonais da unidade de transformação, em cujo caso alguns dos grupos podem ter formato mais ou menos trapezoidal.
Um mapa de signif icância de nível mais elevado correspondente â matriz de grupos pode em seguida ser gerado. O mapa de significância de nível mais elevado ê um conjunto ordenado de sinalizadores de grupos de coeficientes significativos. Existe um sinalizador de grupo de coeficientes significativos para cada grupo que contém ao menos um sinalizador de coeficientes significativos. O grupo que contém o sinalizador de coeficientes significativos não necessita ser incluído no mapa de significância de nível mais elevado, uma vez que jã conterá ao menos um coeficiente não-zero, isto é, o último coeficiente significativo. O mapa de significância pode ser designado mapa nível 0, ou LO. O mapa de signif icância de nivel mais elevado (isto é, que contém os sinalizadores de grupos de coeficientes significativos) pode ser designado mapa nível 1, ou LI. A Figura 5 ilustra o mapa de signif icância de nível mais elevado LI 104 correspondente ao mapa de significância exemplificativo 102 mostrado na Figura 4 . Será observado que o mapa Ll 104 contém um sinalizador de grupo de coeficientes significativos para cada grupo que contém ao menos um sinalizador de coeficientes significativos. Se algum dos sinalizadores de coeficientes significativos dentro do grupo for não-zero, então o sinalizador de grupo de coeficientes significativos é fixado em um. Caso contrário, é fixado em zero. A indexação dos grupos pode ser especificada por [xCG,yCG], onde neste exemplo xCG =0, 1, 2, 3 e yCG = 0, 1, 2, 3. O grupo que contém o último coeficiente significativo está em [3,2] . O grupo em [3,3] não contém qualquer sinalizador de coeficientes significativos, de modo que não está incluído no mapa LI.
Os sinalizadores de grupos de coeficientes significativos podem ser convertidos para a forma de vetor em uma ordem de varredura inversa, em algumas modalidades. A ordem de varredura pode geralmente ser a mesma que a ordem de varredura especificada para uso com a unidade de transformação. Em uma modalidade, o sinalizador de grupo de coeficientes significativos pode utilizar uma ordem de varredura pré-determinada que pode ser diferente da ordem de varredura selecionada para a unidade de transformação. Em alguns casos, o mapa LI pode excluir alguns grupos tal como o grupo [0,0] ou o grupo do último coeficiente significativo, os quais teriam um valor de sinalizador presumido, como será descrito mais abaixo.
Será entendido que o mapa LI não necessita ser obtido diretamente do mapa L0, mas ao invés poderia ser obtido a partir da varredura dos coeficientes na unidade de transformação na ordem de varredura.
Será também entendido que mapas de nível ainda mais elevado podem ser usados nas mesmas modalidades. Por exemplo, se a unidade de transformação for uma unidade de transformação 64x64, o mapa LI pode ser baseado na divisão da unidade de transformação em 256 grupos 4x4 . O mapa LI seria um mapa 16x16 contendo sinalizadores de grupos de LI. Um mapa adicional L2 pode ser gerado pelo agrupamento dos sinalizadores de LI em um conjunto adicional de blocos 4x4 (cada um dos quais correspondería a um grupo de coeficientes 16x16 da unidade de transformação). Níveis adicionais de abstração e/ou granularidade podem ser utilizados em outras modalidades. É feita agora referência à Figura 6, a qual mostra, em forma de fluxograma, um processo exemplificativo 200 para codificação de sinalizadores de coeficientes significativos. O processo 200 inicia-se na operação 202 com o codificador determinando os sinalizadores de coeficientes significativos e os sinalizadores de grupos de coeficientes significativos. Em uma modalidade, o codificador faz a varredura do bloco de transformação em ordem de varredura inversa para determinar o último coeficiente significativo e o conjunto de sinalizadores de coeficientes significativos. Os sinalizadores de grupos de coeficientes significativos podem ser determinados durante a mesma varredura (embora certo montante de armazenamento de valor possa ser utilizado em implementações práticas, uma vez que a ordem de varredura geralmente envolve travessia por múltiplos blocos; em alguns casos, a determinação do sinalizador de grupo de coeficientes significativos ê feita quando o codificador determina que foi feita a varredura do último coeficiente para aquele grupo, por exemplo, o coeficiente de saída). Em algumas modalidades, o codificador pode realizar uma segunda varredura de um dentre o mapa de signif icância LO e a unidade de transformação para determinar os sinalizadores de grupos de coeficientes significativos.
Na operação 204, para cada sinalizador de grupo de coeficientes significativos, o codificador determina o contexto a utilizar e em seguida codifica por entropia aquele sinalizador de grupo de coeficientes significativos com base no contexto determinado. Os sinalizadores de grupos de coeficientes significativos podem ser processados em uma ordem prescrita. Em algumas modalidades, a ordem prescrita é a mesma que a ordem de varredura (ou ordem de varredura inversa) para a unidade de transformação. O número de contextos e suas determinações podem ser estruturados de qualquer modo adequado. Um conjunto exemplificativo de contextos e o método para determinação de contextos para sinalizadores de grupos de coeficientes significativos são descritos mais adiante abaixo.
Tendo codificado o conjunto de sinalizadores de grupos de coeficientes significativos, o codificador em seguida codifica os sinalizadores de coeficientes significativos. Na operação 206, o codificador (manipulando em ordem de varredura inversa) determina o contexto de, e codifica, cada sinalizador de coeficientes significativos se aquele sinalizador de coeficientes significativos estiver incluido em um grupo para o qual o sinalizador de grupo de coeficientes significativos foi fixado em 1. Se o correspondente sinalizador de grupo de coeficientes significativos tiver sido fixado em zero, então todos os sinalizadores de coeficientes significativos naquele grupo não são codificado, isto é, são ignorados durante o processo de codificação por entropia.
Consequentemente, após o processo 200 o codificador produziu um fluxo de bits de dados codificados que contém os sinalizadores de grupos de coeficientes significativos codificados e os sinalizadores de coeficientes significativos codificados que caem dentro de um grupo que tem ao menos um sinalizador de coeficientes significativos não-zero. O fluxo de bits não inclui quaisquer sinalizadores de coeficientes significativos de qualquer grupo que não tenha ao menos um sinalizador de coeficientes significativos não-zero.
No decodificador, os sinalizadores de coeficientes significativos necessitam ser reconstruídos a partir dos dados codificados do fluxo de bits. É feita agora referência à Figura 7, a qual mostra, em forma de fluxograma, um processo exemplificativo 300 para reconstrução de sinalizadores de coeficientes significativos a partir de um fluxo de bits de dados codificados. O fluxo de bits pode ser recebido por intermédio de uma conexão de rede, isto é, transmitido, ou lido a partir de um meio legível por computador, tal como uma memória (por exemplo, memória flash, etc.) ou um disco de armazenamento (por exemplo, DVD, BluRay™, CD-ROM, etc.). O processo 302 é aplicado no processo de reconstrução de uma unidade de transformação em um decodificador. Não é mostrada a decodificação das informações de cabeçalho, tanto para a sequência como para cada fatia ou figura (dependendo da sintaxe do padrão de codificação de vídeo em uso).
Na operação 302, a posição do último coeficiente significativo é decodificada a partir do fluxo de bits. Estas informações podem ser representadas em qualquer sintaxe adequada. Alguns padrões estabelecem que o último coeficiente significativo seja especificado mediante utilização de notação matricial, por exemplo, localização baseada em x e y dentro da unidade de transformação; alguns padrões estabelecem que o último coeficiente significativo seja assinalado mediante utilização de um vetor de 0's com um 1 na posição do último coeficiente significativo, onde o vetor é mapeado para a unidade de transformação pela ordem de varredura. Qualquer sintaxe adequada para especificação do último coeficiente significativo pode ser usada na operação 302.
Na operação 304, os sinalizadores de grupos de coeficientes significativos são decodificados a partir do fluxo de bits. Os sinalizadores de grupos de coeficientes significativos podem ter sido codificados por entropia mediante utilização de qualquer que tenha sido o esquema de binarização aplicável especificado pelo padrão ou especificado nas informações de cabeçalho. Por exemplo, pode ser utilizada em alguns casos codificação aritmética binária de contexto adaptativo. Os sinalizadores de grupos de coeficientes significativos são decodificados pela determinação do contexto para cada posição de sinalizador (posição de bits no mapa de signif icância de nivel mais elevado - por exemplo, o mapa de signif icância LI) , e em seguida pela decodificação do valor de sinalizador do fluxo de bits e pela atualização do contexto com base no valor de sinalizador. A dimensão do conjunto de sinalizadores de grupos de coeficientes significativos é conhecida porque a ordem de varredura é conhecida e o último coeficiente significativo foi identificado na operação 302; portanto, a dimensão do mapa de significância LI é determinada. No caso de grupos partícionados não-uniformemente, pode ser fornecida na sintaxe uma sinalização adequada das dimensões e posições dos grupos.
Como observado acima, cada sinalizador de grupo de coeficientes significativos corresponde a um grupo respectivo dos grupos contíguos definidos para a unidade de transformação. Um ou mais dos sinalizadores de coeficientes significativos caem dentro de cada um destes grupos que têm um sinalizador de grupo de coeficientes significativos. Consequentemente, cada sinalizador de grupo de coeficientes significativos corresponde a um grupo respectivo dos sinalizadores de coeficientes significativos.
Após decodificação do conjunto de sinalizadores de grupos de coeficientes significativos, então as operações remanescentes para reconstrução do mapa de significância, isto é, o conjunto de sinalizadores de coeficientes significativos, são realizadas na ordem de varredura prescrita. No caso de uma ordem de varredura inversa, então o processamento inicia-se a partir do último coeficiente significativo (mas excluindo aquela posição do último coeficiente significativo, uma vez que já é sabido que contêm um coeficiente não-zero). Na operação 305, para cada sinalizador de coeficientes significativos o decodificador determina se o seu correspondente sinalizador de grupo de coeficientes significativos é zero. Se o correspondente sinalizador de grupo de coeficientes significativos for não-zero, então o sinalizador de coeficientes significativos é decodificado a partir do fluxo de bits como indicado na operação 306. Isto é, se o correspondente ou associado sinalizador de grupo de coeficientes significativos indicar que o grupo pode conter ao menos um coeficiente não-zero, então o decodificador decodifica um sinalizador de coeficientes significativos a partir do fluxo de bits para a posição corrente.
Se o correspondente ou associado sinalizador de grupo de coeficientes significativos for um zero, isto ê, ele indica que não existem coeficientes não-zero no grupo, então o decodificador fixa ou reconstrói o corrente sinalizador de coeficientes significativos em zero, como indicado pela operação 308. Não o decodifica a partir do fluxo de bits.
Na operação 310, o decodificador determina se foi alcançado o final da ordem de varredura inversa, isto ê, o coeficiente no canto superior esquerdo da unidade de transformação, por exemplo [0,0]. Em caso afirmativo, o processo 300 termina; caso contrário, o decodificador desloca-se para a posição seguinte na ordem de varredura inversa na operação 312 e repete as operações 306 e 308 para reconstruir o sinalizador de coeficientes significativos para aquela posição seguinte.
Será entendido que a ordem de varredura geralmente não resulta na reconstrução de todos os sinalizadores de coeficientes significativos de um grupo antes de deslocá-la para o grupo seguinte. Ao invés, a ordem de varredura (dependendo da ordem de varredura e da geometria do grupo) geralmente faz a varredura através das fronteiras do grupo de modo que o decodificador reconstrua uns poucos sinal izadores de um grupo, uns poucos de um grupo adjacente, etc., manipulando o seu trajeto de volta para a posição [0,0] na ordem de varredura inversa.
Poderão existir casos especiais que são levados em conta nos processos de codificação e decodificação para salvar bits. Por exemplo, como observado acima, o grupo que contém o último coeficiente significativo terá sempre um sinalizador de grupo de coeficientes significativos que indique um coeficiente não-zero, de modo que aquele sinalizador de grupo de coeficientes significativos não necessite ser codificado e transmitido para o decodificador. O codificador sempre codifica os sinalizadores de coeficientes significativos para aquele grupo, e o decodificador está configurado para sempre decodificar os sinalizadores de coeficientes significativos para aquele grupo.
Outro caso especial que pode ser incluído em algumas modalidades é sempre codificar e decodificar o primeiro grupo. Este grupo contém o coeficiente DC em [0,0] na unidade de transformação. A probabilidade deste grupo conter coeficientes não-zero é extremamente baixa. Consequentemente, ao invés de transmitir um sinalizador de grupo de coeficientes significativos para o grupo [0,0], o codificador pode ser configurado para sempre codificar os sinalizadores de coeficientes significativos daquele grupo e o decodificador pode ser configurado para sempre decodificar os sinalizadores de coeficientes significativos daquele grupo.
Ainda outro caso especial que pode ser implementado em algumas modalidades é também baseado em probabilidade. Foi observado que quando o grupo ã direita e o grupo abaixo de um grupo especifico contêm ambos os coeficientes não-zero, então a probabilidade de que o grupo especifico contenha um coeficiente não-zero ê muito elevada. Portanto, em algumas modalidades, o codificador e o decodificador podem assumir que qualquer grupo que tenha um grupo adjacente à direita e um grupo adjacente abaixo em que ambos contenham coeficientes não-zero, então aquele grupo tem coeficiente não-zero. Portanto, em relação a um determinado grupo, se o sinalizador de grupo de coeficientes significativos para o grupo ã direita for fixado em 1, então o codificador não codifica um sinalizador de grupo de coeficientes significativos para o grupo específico e sempre codifica os sinalizadores de coeficientes significativos para o grupo especifico. O decodificador reconhece que os grupos adjacentes à direita e abaixo possuem sinalizadores de grupos de coeficientes significativos que indicam coeficientes não-zero, de modo que assumirá automaticamente que determinado grupo tem coeficientes não-zero e decodificará os sinalizadores de coeficientes significativos. É feita agora referência à Figura 8, a qual mostra a operação 304 da Figura 7 com detalhe adicional para refletir uma modalidade exemplificativa da manipulação dos casos especiais descritos acima. A operação 304 inclui uma operação 304-1 na qual o sinalizador de grupo de coeficientes significativos para o grupo que contém o último coeficiente significativo é fixado em l. A localização do último coeficiente significativo é decodificada a partir do fluxo de bits em uma operação anterior (não mostrada). O decodifícador em seguida desloca-se através dos grupos em ordem de varredura inversa. Como observado na operação 304-2, o decodificador desloca-se para o grupo seguinte na ordem de varredura inversa a partir do grupo que contém o último coeficiente significativo. Para este grupo, o decodificador acessa se o sinalizador de grupo de coeficientes significativos para o grupo à direita e o sinalizador de grupo de coeficientes significativos para o grupo abaixo são iguais a 1. Inicialmente, o decodificador não terá sinalizadores â direita e abaixo porque acabou de ser iniciado, mas mais tarde na ordem de varredura (quer horizontal, vertical, ou diagonal) o decodificador pode algumas vezes ter reconstruído sinalizadores de grupos de coeficientes significativos nestas posições em relação ao grupo corrente (para grupos localizados no canto inferior da unidade de transformação, o decodificador pode nunca ter tido um sinalizador para um grupo abaixo). Se aqueles dois grupos adjacentes estiverem fixados em 1, então a probabilidade do grupo corrente também ter sido fixado em 1 é suficientemente elevada para tanto o codificador como o decodificador presumirem que estão fixados em um. Consequentemente, na operação 304-6, o decodificador fixa o sinalizador de grupo de coeficientes significativos em 1 se a condição do caso especial for satisfeita. Caso contrário, o decodificador desloca-se para a operação 304-4. Em outra modalidade, este caso especial pode ser modificado para ser baseado nos sinalizadores de grupos de coeficientes significativos de outros grupos adjacentes, ou outros grupos de modo geral.
Na operação 304-4, o decodificador decodifica o sinalizador de grupo de coeficientes significativos para o grupo corrente do fluxo de bits. A decodificação inclui a determinação do contexto e em seguida a decodificação de acordo com o contexto determinado. A decodificação pode ser baseada na codificação aritmética binária (BAC), ou outros processos de codificação/decodificação binários.
Na operação 304-5, o decodificador determina se este é 0 grupo próximo ao último na ordem de varredura inversa. Se não for, então a decodificação ainda não estará terminada, de modo que o decodificador retorna o ciclo para a operação 34 0-2 para avançar para o grupo seguinte na ordem de varredura inversa. Se for o grupo próximo ao último na ordem de varredura inversa, então o decodificador desloca-se para a operação 304-7 onde o decodificador fixa o sinalizador de grupo de coeficientes significativos para o último grupo, isto é, grupo [0,0] , em l.Isto é baseado no caso especial no qual aquele grupo específico é sempre considerado pelo codificador e decodificador como tendo ao menos um coeficiente não-zero, de modo que o sinalizador de grupo de coeficientes significativos é sempre prefixado em 1 para que os sinalizadores de coeficientes significativos para aquele grupo sejam sempre codificados e decodificados. Após esta operação, o decodificador vai para a operação 306 ou 308 (Fig. 7).
Será entendido que no processo exemplificativo acima ilustrado nas Figuras 7 e 8, a decodif icação do mapa de significância LI (os sinalizadores de grupos de coeficientes significativos) e a decodificação do mapa de significância L0 (os sinalizadores de coeficientes significativos) são processos de duas etapas no qual o mapa de significância LI é completamente decodificado e o mapa de significância LO é em seguida decodificado. Em algumas modalidades este pode ser o caso; contudo, em algumas outras modalidades, os processos de decodificação podem ser parcialmente entrelaçados. Isto é, a decodificação do mapa LO pode começar antes do mapa LI estar completamente decodificado. Serã entendido que em algumas modalidades a decodificação do mapa de significância LO pode começar logo que o primeiro sinalizador de grupo de coeficientes significativos tiver sido reconstruído.
Em algumas modalidades, a codificação de mapas de significância de nível múltiplo pode ser ligada e desligada dependendo, por exemplo, do tipo de figura. Por exemplo, a codificação de mapas de significância de nível múltiplo pode ser habilitada para figuras I e P, mas desabilitada para figuras B.
Modelagem de Contextos Para melhorar a eficiência de codificação, o mecanismo BAC (ou outro mecanismo de codificação/ decodificação por entropia) utiliza contextos. O presente pedido de patente propõe a utilização de quatro novos contextos para codificação dos sinalizadores de grupos de coeficientes significativos. Dois contextos são para codificação/decodificação de luminância e dois são para codificação/decodificação de crominância.
Considere-se que é usada a ordem de varredura inversa (outras ordens prescritas podem ser usadas em outras implementações). A determinação de qual dos dois contextos se aplica a um dado sinalizador de grupo de coeficientes significativos pode ocorrer como segue. Se o sinalizador de grupo de coeficientes significativos para o grupo adjacente à direita do grupo corrente for zero, e o sinalizador de grupo de coeficientes significativos para o grupo adjacente abaixo do grupo corrente for zero, então o contexto para codificação do sinalizador de grupo de coeficientes significativos do grupo corrente é 0. Caso contrário, o contexto ê l. Se os sinalizadores para aqueles dois grupos adjacentes não estiverem disponíveis, então os sinalizadores indisponíveis são considerados = 0 para a finalidade de determinação de contexto.
Observe-se que se for usada a ordem de varredura direta, o modelo de contexto pode ser alterado para utilizar o sinalizador de grupo de coeficientes significativos para o grupo adjacente â esquerda do grupo corrente e o sinalizador de grupo de coeficientes significativos' para o grupo adjacente acima do grupo corrente para determinar o contexto. O processo de determinação de contexto pode também incluir casos especiais. Por exemplo, ao grupo superior esquerdo pode sempre ser atribuído o contexto 1.
Existem outros modelos de contexto possíveis e métodos para determinação de contexto que podem ser usados. Alguns exemplos são dados abaixo.
Para definir a notação, seja L [i] o sinalizador de significância do grupo de coeficientes i no nível L e seja N o número dos grupos de coeficientes no nível L. Em geral, para um dado L e grupo de coeficientes i, usamos uma função c(*) de i e todos L[j] disponíveis para determinar um contexto C_i para L[i]. O contexto é então dado por: C_i = C ( i, L [ Ο ] ,L[1] , . . . , L[N-1] ) onde j! = i. Observe-se que com a finalidade de utilizar L[j] para determinar um contexto para L[i] , o próprio L[j] deve estar disponível. Portanto, a ordem de varredura selecionada deve garantir que qualquer L[j] usado em c(*) tenha sido determinado previamente.
Em uma modalidade similar ao modo de determinação de contexto descrito acima, o contexto pode ser determinado por: C_i = c (i,L0 [0] ,L0 [1] , . . . ,L0 [15] ) = sum{bj *L0 [j] } onde j = 0, Ι,.,.,Ν e j! = i, bj = 1 se o grupo de coeficientes j estiver adjacente â direita ou abaixo do grupo de coeficientes i, e bj = 0 em caso contrário. Esta modalidade específica tem 3 contextos (6, se 3 contextos distintos forem usados para crominância).
Outra modalidade de c(*) ê dada por: C_i = c (i, L [ 0] ,L[1] , . . .,L[N-1] > = sum{bj*L[j] } onde j = 0, 1,..., N e j! = i, bj é não-zero se o grupo de coeficientes j for qualquer grupo de coeficientes adjacentes de i que jã tenha sido determinado e bj = 0 em caso contrário. Nesta modalidade, os coeficientes de ponderação bj podem não necessariamente ser constantes.
Outra modalidade de c(*) ignora os sinalizadores de grupos de coeficientes significativos de outros grupos de coeficientes em L e determina o contexto baseado na posição i do grupo corrente de coeficientes. Isto pode ser expresso como: C_i = C(Í,L[0] ,L[1] , . . . ,L[N-1] ) = i Outros modelos de contexto e processos para determinação de contexto podem, ser usados com mapas de significância de nível múltiplo.
Quantização Otimizada de Taxa de Distorção Alguns processos de codificação utilizam quantização otimizada de taxa de distorção (RDOQ) , ou o que ê algumas vezes designado "quantização suave". RDOQ é um processo de determinação de coeficientes quantizados ótimos no domínio da transformação baseado em uma expressão de otimização de taxa de distorção. Consequentemente, os coeficientes quantizados no domínio da transformação que resultam da RDOQ podem ou não ser os mesmos que os coeficientes quantizados no domínio da transformação que foram obtidos através da transformação normal e processo de quantização. Em alguns casos, os valores de coeficientes podem ter sido modificados pelo processo RDOQ devido â distorção resultante ter sido determinada para ser menos dispendiosa que a consequente economia nos custos de transmissão. O processo RDOQ normalmente calcula quatro custos na determinação do componente de taxa. Os quatro custos de taxa incluem a taxa da última posição, a taxa de significância (taxa LO), a taxa de coeficiente, e a taxa de parâmetro de bloco codificado (CBP). Para implementar mapas de significância de nível múltiplo, pode ser vantajoso modificar RDOQ para também incluir a taxa de significância de nível mais elevado (por exemplo, taxa Ll) no cálculo de RDOQ.
Em uma modalidade o processo RDOQ pode ser modificado para realizar uma RDOQ em duas etapas em relação a mapas de significância. Primeiro, o processo RDOQ é aplicado para determinar os melhores valores de última posição e coeficientes e, portanto, os sinalizadores de coeficientes significativos de LI. Em uma segunda etapa, com a última posição fixada, o processo RDOQ pode em seguida ser aplicado novamente em relação ã taxa de LI para determinar se existe uma justificativa de custo de taxa de distorção (RD) para zerar quaisquer coeficientes. A Figura 9 mostra, em forma de fluxograma, um processo RDOQ exemplificativo 400 para codificação de mapas de significância de nivel múltiplo. O processo 400 utiliza RDOQ para obter os coeficientes de transformação quantizados ótimos e para determinar a posição do último coeficiente significativo , isto ê, uma RDOQ de L0. O processo 400 fixa em seguida a última posição e ajusta o custo corrente de RD para levar em consideração o efeito dos níveis adicionais de mapas de significância. Em seguida, utiliza uma técnica rápida para otimizar ainda mais os coeficientes de transformação. A operação 4 02 reflete o uso de RDOQ para obter coeficientes quantizados ótimos no domínio da transformação, a qual fornece uma posição do último coeficiente significativo. A operação 402 resulta em um determinado custo de RD baseado nas taxas para transmissão da última posição, mapa de significância correspondente aos coeficientes ótimos, os valores de coeficientes, e CBP.
Na operação 4 04, é fixada a posição menos significativa. Isto é o último grupo conterá um coeficiente não-zero, isto é, o sinalizador de grupo do último coeficiente significativo é fixado em 1. O codificador em seguida determina rapidamente se ê encontrada economia de custos pela fixação em zero dos coeficientes em outros grupos. O processo 400 pode ser realizado em ordem de varredura inversa em algumas modalidades, embora possa ser processado em outra ordem.
Na operação 406, começando com o grupo próximo ao último como o grupo corrente, o codificador determina se o grupo corrente tem um sinalizador de coeficientes significativos = 1. Caso não tenha, então o grupo jã contém apenas zeros e o codificador pula para o grupo seguinte. Se o sinalizador de grupo de coeficientes significativos = 1, então o codificador calcula um custo de RD que resultaria se todos os coeficientes no grupo corrente fossem zero. Na operação 408, o codificador acessa se o custo de RD recentemente calculado é melhor que (por exemplo, menor que) o custo de RD corrente. Caso seja, então na operação 410 todos os coeficientes no grupo corrente são zerados e o custo de RD corrente ê atualizado para refletir a mudança. Na operação 412, o codificador determina se é feito com o RDOQ de LI, por exemplo, se alcançou o grupo ímediatamente antes do grupo [0,0] (o grupo [0,0] não é zerado se o codificador e decodificador forem configurados para presumir que existe ao menos um coeficiente não-zero naquele grupo, como descrito nos casos especiais apresentados acima). Se existirem grupos adicionais para acessar, então o processo 400 continua na operação 414, onde o codificador se desloca para o grupo seguinte (usando ordem de varredura inversa em algumas modalidades). O processo RDOQ será agora ilustrado por meio de um exemplo. Serão novamente feitas referências ao exemplo dado acima em conexão com as Figuras 3, 4 e 5. Antes da RDOQ de LI, mas após a RDOQ de LO, os coeficientes quantizados ótimos no domínio da transformação são mostrados na Figura 3. O correspondente mapa de significância LO é mostrado na Figux_a 4 e o mapa de signif icância LI é mostrado na Figura 5 . O processo RDOQ de LI pode resultar, por exemplo, em uma mapa de signif icância LI otimizado 500 mostrado na Figura 10, e no associado ou correspondente mapa de significância LI 502 mostrado na Figura 11.
Será observado que os sinalizadores de coeficientes significativos no último grupo significativo , isto é, o grupo [3,2], não são alterados. Contudo, o grupo [3,0], o grupo [0,3] e o grupo [1,3] foram todos zerados. Como resultado, os correspondentes sinalizadores de grupos de coeficientes significativos para estes três grupos foram também alterados para zero, como indicado na Figura 11. O resultado é que o codificador não necessitará codificar estes três grupos. A distorção que resulta de tornar zero os poucos coeficientes que foram encontrados naqueles grupos é compensada pela economia de custos pela redução do número de bits codificados, como determinado pela avaliação de RDOQ.
Em uma possível modalidade, o processo RDOQ pode ser estendido para determinar a dimensão ótima do grupo de coeficientes para a TU corrente. Nesta modalidade, o processo 400 é repetido para múltiplas rotinas, com cada rotina considerando uma dimensão diferente do grupo de coeficientes e com a operação 410 modificada de modo que os coeficientes de transformação não sejam efetivamente fixados em 0. Essencialmente, em cada rotina, este processo RDOQ modificado calcula o custo de RD para uma dimensão específica do grupo de coeficientes. Após todas as rotinas terem terminado, a RDOQ seleciona a dimensão do grupo de coeficientes que produz o menor custo de RD e finalmente fixa quaisquer coeficientes de transformação em 0 conforme necessário. O codificador codifica o valor da dimensão ótima do grupo de coeficientes dento do fluxo de bits de modo que possa ser obtido e usado pelo decodificador.
As dimensões dos grupos de coeficientes são testadas e podem ser baseadas na dimensão da unidade de transformação. Por exemplo, uma unidade de transformação 32x32 pode testar dimensões de grupos 8x8, 4x4 e 2x2. Os grupos a serem testados podem ser selecionáveis, e o codificador pode indicar (por exemplo, no cabeçalho de sequência) que dimensões de grupos serão testadas para cada dimensão de unidade de transformação. Suponha-se, por exemplo, que o codificador e decodificador decidiram que, para as TUs 16x16, a RDOQ modificada testará duas diferentes dimensões de grupos de coeficientes: 2x2 e 4x4, representados por l e 0, respectivamente. Se a RDOQ modificada determinar que 2x2 é ótima, o codificador codifica um bin 1 dentro do fluxo de bits antes dos significant_coeffgroup_flag's. O decodificador decodifica este bin antes dos significant_coeffgroup_flag's e sabe que a dimensão do grupo de coeficientes para a TU corrente é 2x2.
Sintaxe Exemplificativa Uma sintaxe exemplificativa para implementação de mapas de significância de nível múltiplo é fornecida abaixo. Esta sintaxe exemplificativa é apenas uma implementação possível.
Os sinalizadores de grupos de coeficientes significativos podem ser representados e definidos como: significant_coeffgroup_flag[xCG][yCG] Este sinalizador especifica, para a posição do grupo de coeficientes (xCG,yCG) dentro do bloco de transformação corrente 16x16 ou 32x32, se o correspondente grupo de coeficientes na localização (xCG,yCG) tem coeficientes não-zero como segue: Se significant_coeffgroup_flag[xCG] [yCG] for igual a 0, o número de coeficientes não-zero no grupo de coeficientes na localização (xCG,yCG) é fixado igual a 0;
Caso contrário (significant_coeffgroup_flag[xCG] [yCG] for igual a 1), o número de coeficientes não-zero no grupo de coeficientes na localização (xCG,yCG) é não-zero exceto para os casos especiais definidos abaixo.
Os casos especiais são definidos como segue: 1. O signif icant_coef fgroup__f lag [0] [0] na primeira posição do grupo de coeficientes (0,0) na ordem de varredura é inferido ser igual a 1. 2. O significant coeffgroupflag[xCG] [yCG] na posição do grupo de coeficientes (xCG,yCG) na ordem de varredura é inferido ser igual a 1 se significant_coeffgroup_flag[xCG] [yCG+1]=1 e significant_coeffgroup_flag[xCG+1] [yCG]=1.
Quando significant_coeffgroupflag[xCG][yCG] não existir, é inferido ser igual a 0.
Em algumas modalidades, o significant_coeffgroup_flag[xCG] [yCG] não se aplica a blocos de transformação 4x4 e 8x8. O pseudocódigo a seguir ilustra um exemplo de implementação de mapas de significância de nivel múltiplo dentro do processo de decodificação para reconstrução de coeficientes quantizados no domínio da transformação (residuais).
Será observado que a primeira porção do pseudocódigo inclui decodificação da posição do último coeficiente significativo. O número de grupos ê em seguida determinado, se a unidade de transformação for 16x16 ou maior (como indicado por if(log2TrafoSize>3)). O pseudocódigo precedente mostra um implementação exemplificativa do processo exemplificativo 300 descrito acima em conexão com a Figura 7. É feita agora referência à Figura 12, a qual mostra um diagrama de blocos simplificado de uma modalidade exemplificativa de um codificador 900. O codificador 900 inclui um processador 902, memória 904, e uma aplicação de codificação 906. A aplicação de codificação 906 pode incluir um programa ou aplicação de computador armazenado na memória 904 e contendo instruções para configuração do processador 902 para realizar operações tais como aquelas descritas aqui. Por exemplo, a aplicação de codificação 906 pode codificar e transmitir fluxos de bits codificados de acordo com os processos de mapas de significância de nível múltiplo descritos aqui. Serã entendido que a aplicação de codificação 906 pode ser armazenada em um meio legível por computador, tal como um disco compacto, dispositivo de memória flash, memória de acesso aleatório, disco rígido, etc. Ê feita agora referência à Figura 13, a qual mostra um diagrama de blocos simplificado de uma modalidade exemplificativa de um decodificador 1000. 0 decodificador 1000 inclui um processador 1002, uma memória 1004 e uma aplicação de decodificação 1006. A aplicação de decodificação 1006 pode incluir um programa ou aplicação de computador armazenado na memória 1004 e contendo instruções para configuração do processador 1002 para realizar operações tais como aquelas descritas aqui. Por exemplo, a aplicação de codificação 1006 pode incluir um decodificador de entropia configurado para reconstruir resíduos baseados em mapas de significância de nível múltiplo, como descrito aqui. Será entendido que a aplicação de decodificação 1006. pode ser armazenada em um meio legível por computador, tal como um disco compacto, dispositivo de memória flash, memória de acesso aleatório, disco rígido, etc.
Serã entendido que o decodificador e/ou codificador de acordo com o presente pedido de patente pode ser implementado em diversos dispositivos computacionais que incluem, sem limitação, servidores, computadores de uso geral adequadamente programados, dispositivos de codificação e reprodução de áudio/vídeo, caixas conversoras de televisão, equipamento de difusão de televisão, e dispositivos móveis. O decodificador ou codificador pode ser implementado por meio de software que contenha instruções para configuração de um processador para realizar as funções descritas aqui. As instruções de software podem ser armazenadas em qualquer memória adequada legível por computador não-transitória, incluindo CDs, RAM, ROM, memória Flash, etc.
Será entendido que o codificador descrito aqui e o módulo, rotina, processo, encadeamento, ou outro componente de software que implemente o método/processo descrito para configuração do codificador pode ser realizado mediante utilização de técnicas e linguagens de programação padrão de computador. O presente pedido de patente não está limitado a processadores, linguagens de computador, convenções de programação de computador, estruturas de dados, outros tais detalhes de implementação específicos. Aqueles versados na técnica reconhecerão que os processos descritos podem ser implementados como uma parte de código executável por computador armazenado em memória volátil ou não-volátil, como parte de um circuito integrado de aplicação específica (ASXC), etc.
Podem ser feitas algumas adaptações e modificações das modalidades descritas. Portanto, as modalidades discutidas acima são consideradas como ilustrativas e não restritivas.

Claims (20)

1. Método de reconstrução de sinalizadores de coeficientes significativos para uma unidade de transformação a partir de um fluxo de bits de dados codificados, a unidade de transformação particionada em grupos não-sobrepostos de sinalizadores de coeficientes significativos, o método caracterizado pelo fato de que compreende: reconstruir sinalizadores de grupos de coeficientes significativos, onde cada sinalizador de grupo de coeficientes significativos corresponde a um grupo respectivo de sinalizadores de coeficientes significativos, mediante fixação do valor de ao menos um sinalizador de grupo de coeficientes significativos em 1; e reconstruir cada sinalizador de coeficientes significativos mediante decodificação do sinalizador de coeficientes significativos a partir do fluxo de bits se aquele sinalizador de coeficientes significativos estiver em um grupo que tenha um correspondente sinalizador de grupo de coeficientes significativos que não seja zero, e fixação do sinalizador de coeficientes significativos em zero, se aquele sinalizador de coeficientes significativos estiver em um grupo que tenha um correspondente sinalizador de grupo de coeficientes significativos que seja zero.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a reconstrução dos sinalizadores de grupos de coeficientes significativos inclui decodif icação a partir do fluxo de bits de ao menos um dos sinalizadores de grupos de coeficientes significativos diferente do referido ao menos um sinalizador de grupo de coeficientes significativos.
3. Método, de acordo com a reivindicação 1 ou reivindicação 2, caracterizado pelo fato de que a fixação do valor de ao menos um sinalizador de grupo de coeficientes significativos em 1 inclui a fixação do sinalizador de grupo de coeficientes significativos para o grupo que contém o sinalizador de coeficientes significativos para um último coeficiente significativo em 1.
4. Método, de acordo com qualquer uma das reivindicações 1, 2 ou 3, caracterizado pelo fato de que a fixação do valor de ao menos um sinalizador de grupo de coeficientes significativos em l inclui a fixação do sinalizador de grupo de coeficientes significativos para o grupo que contém o sinalizador de coeficientes significativos para um coeficiente DC em 1.
5. Método, de acordo com qualquer uma das reivindicações 1, 2, 3 ou 4, caracterizado pelo fato de que a fixação do valor de ao menos um sinalizador de grupo de coeficientes significativos em 1 inclui a fixação do sinalizador de grupo de coeficientes significativos em 1 se aquele sinalizador de grupo de coeficientes significativos corresponder a um grupo que tenha dois grupos adjacentes ambos tendo correspondentes sinalizadores de grupos de coeficientes significativos que tiveram valores reconstruídos para 1.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que os grupos são contíguos, e pelo fato dos dois grupos adjacentes incluem um bloco adjacente à direita e um bloco adjacente abaixo.
7. Mátodo, de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5 ou 6, caracterizado pelo fato de que a reconstrução dos sinalizadores de grupos de coeficientes significativos compreende a fixação do valor de sinalizadores de grupos de coeficientes significativos em zero para cada sinalizador de grupo de coeficientes significativos após, em uma ordem de varredura direta, o grupo que contém um último coeficiente significativo.
8. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a decodificação a partir do fluxo de bits de ao menos um dos sinalizadores de grupos de coeficientes significativos compreende a decodificação de todos os sinalizadores de grupos de coeficientes significativos para a unidade de transformação que não foi f ixada.
9. Método, de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5, 6, 7 ou 8, caracterizado pelo fato de que a unidade de transformação é 16x16 e pelo fato de cada grupo é um bloco 4x4.
10. Método, de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5, 6, 7 ou 8, caracterizado pelo fato de que a unidade de transformação é 32x32 e pelo fato de que cada grupo é um bloco 8x8.
11. Método, de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9 ou 10, caracterizado pelo fato de que a reconstrução de um dos sinalizadores de grupos de coeficientes significativos inclui determinar um contexto para aquele sinalizador de grupo de coeficientes significativos com base nos sinalizadores de grupos de coeficientes significativos reconstruídos para dois grupos adjacentes.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que os dois grupos adjacentes incluem um adjacente à direita e um adjacente abaixo, e pelo fato do contexto ser 0 se ambos os sinalizadores de grupos de coeficientes significativos para os dois grupos adjacentes forem 0, e pelo fato do contexto ser 1 em caso contrário.
13. Método, de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ou 12, caracterizado pelo fato de que os valores de todos os sinalizadores de coeficientes significativos em um dos grupos decodificados a partir do fluxo de bits é zero, embora o correspondente sinalizador de grupo de coeficientes significativos tenha sido fixado em 1.
14. Método, de acordo com qualquer uma das reivindicações l, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ou 13, caracterizado pelo fato de que o fluxo de bits de video se conforma a um dentre um padrão de codificação de vídeo escalãvel, um padrão de codificação de múltipla visão, um padrão de codificação de vídeo reconfigurãvel, e um padrão de codificação de video de alta eficiência.
15. Método, de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ou 14, caracterizado pelo fato de que cada grupo tem uma altura diferente da sua largura.
16. Método, de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ou 15, caracterizado pelo fato de que cada grupo contêm dezesseis sinalizadores de coeficientes significativos, e pelo fato da decodif icação do sinalizador de grupo de coeficientes significativos a partir do fluxo de bits, se aquele sinalizador de coeficientes significativos estiver em um grupo que tenha correspondente sinalizador de grupo de coeficientes significativos que seja não-zero, compreender: se os primeiros quinze sinalizadores de coeficientes significativos decodifiçados para aquele grupo forem zero, então fixar um décimo-sexto sinalizador de coeficientes significativos naquele grupo em 1.
17. Decodificador para decodificação de um fluxo de bits de dados codificados para reconstruir sinalizadores de coeficientes significativos para uma unidade de transformação, o codificador caracterizado pelo fato de que compreende: um processador; uma memória; e uma aplicação de decodificação armazenada na memória e contendo instruções para configurar o processador para realizar o método de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ou 16.
18. Método para codificação de sinalizadores de coeficientes significativos para uma unidade de transformação, a unidade de transformação particionada em grupos não-sobrepostos de sinalizadores de coeficientes significativos, o método caracterizado pelo fato de que compreende: codificar sinalizadores de grupos de coeficientes significativos, onde cada sinalizador de grupo de coeficientes significativos corresponde a um grupo respectivo dos grupos de sinalizadores de coeficientes significativos, e onde o sinalizador de grupo de coeficientes significativos é fixado em zero para indicar que aquele grupo correspondente não contém sinalizadores de coeficientes significativos não-zeros, e onde a codificação exclui ao menos um sinalizador de grupo de coeficientes significativos inferido para ser 1 independentemente do seu grupo correspondente conter sinalizadores de coeficientes significativos não-zeros,- e para cada um dos sinalizadores de coeficientes significativos, codificar o sinalizador de coeficientes significativos se aquele sinalizador de coeficientes significativos estiver em um dos grupos para o qual o seu sinalizador de grupo de coeficientes significativos correspondente for não-zero, e não codificar o sinalizador de coeficientes significativos se aquele sinalizador de coeficientes significativos estiver em um dos grupos para o qual o sinalizador de grupo de coeficientes significativos correspondente for zero.
19. Decodificador para decodificação de sinalizadores de coeficientes significativos para uma unidade de transformação, o codificador caracterizado pelo fato de que compreende: um processador; uma memória que armazena o mapa de signifícância; e uma aplicação de decodificação armazenada na memória e contendo instruções para configurar o processador para realizar o método de acordo com a reivindicação 18 .
20. Meio legível por computador não-transitório que armazena instruções executáveis por processador, caracterizado pelo fato de que, quando executado, configura um ou mais processadores a realizar o método de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ou 16 ou 19.
BR102012027968-1A 2011-11-01 2012-10-31 Método de reconstrução de sinalizadores de coeficientes significativos e decodificador para decodificação de um fluxo de bits de dados codificados BR102012027968B1 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP11187410.3A EP2590409B1 (en) 2011-11-01 2011-11-01 Multi-level significance maps for encoding and decoding
EP11187410.3 2011-11-01

Publications (2)

Publication Number Publication Date
BR102012027968A2 true BR102012027968A2 (pt) 2015-09-15
BR102012027968B1 BR102012027968B1 (pt) 2021-12-21

Family

ID=45033756

Family Applications (1)

Application Number Title Priority Date Filing Date
BR102012027968-1A BR102012027968B1 (pt) 2011-11-01 2012-10-31 Método de reconstrução de sinalizadores de coeficientes significativos e decodificador para decodificação de um fluxo de bits de dados codificados

Country Status (13)

Country Link
EP (4) EP3754989A1 (pt)
JP (1) JP2013098988A (pt)
KR (1) KR101407755B1 (pt)
CN (2) CN103096065B (pt)
AU (1) AU2012244144B2 (pt)
BR (1) BR102012027968B1 (pt)
CA (1) CA2793068C (pt)
ES (1) ES2728529T3 (pt)
HK (2) HK1182243A1 (pt)
HU (1) HUE043461T2 (pt)
PL (1) PL2876883T3 (pt)
SG (1) SG189658A1 (pt)
TW (1) TWI510031B (pt)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9621894B2 (en) 2012-01-13 2017-04-11 Qualcomm Incorporated Determining contexts for coding transform coefficient data in video coding
US9538175B2 (en) * 2012-09-26 2017-01-03 Qualcomm Incorporated Context derivation for context-adaptive, multi-level significance coding
CA2917419C (en) * 2013-07-24 2020-07-14 Microsoft Technology Licensing, Llc Scanning orders for non-transform coding
JP2020072277A (ja) * 2017-03-03 2020-05-07 シャープ株式会社 動画像符号化装置及び動画像復号装置
AU2019201653A1 (en) * 2019-03-11 2020-10-01 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
CN116489374A (zh) * 2020-03-16 2023-07-25 北京达佳互联信息技术有限公司 对视频数据进行编码的方法、装置和介质
US20220239923A1 (en) * 2021-01-26 2022-07-28 Meta Platforms, Inc. Dynamically biasing mode selection in video encoding

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3017745B2 (ja) * 1989-03-14 2000-03-13 ソニー株式会社 データ伝送方法
US7596279B2 (en) * 2002-04-26 2009-09-29 Ntt Docomo, Inc. Image encoding device, image decoding device, image encoding method, image decoding method, image encoding program, and image decoding program
JP4230188B2 (ja) * 2002-06-06 2009-02-25 パナソニック株式会社 可変長符号化方法および可変長復号化方法
CA2457988A1 (en) * 2004-02-18 2005-08-18 Voiceage Corporation Methods and devices for audio compression based on acelp/tcx coding and multi-rate lattice vector quantization
US20060078049A1 (en) * 2004-10-13 2006-04-13 Nokia Corporation Method and system for entropy coding/decoding of a video bit stream for fine granularity scalability
US20070071331A1 (en) * 2005-09-24 2007-03-29 Xiteng Liu Image compression by economical quaternary reaching method
KR101356733B1 (ko) * 2007-03-07 2014-02-05 삼성전자주식회사 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치
TWI341657B (en) * 2007-04-03 2011-05-01 Nat Univ Tsing Hua Cabac decoding method
EP2154894A1 (en) * 2008-08-15 2010-02-17 Thomson Licensing Video coding with coding of the locations of significant coefficients in a block of coefficients
KR101457894B1 (ko) * 2009-10-28 2014-11-05 삼성전자주식회사 영상 부호화 방법 및 장치, 복호화 방법 및 장치
US8942282B2 (en) * 2010-04-12 2015-01-27 Qualcomm Incorporated Variable length coding of coded block pattern (CBP) in video compression

Also Published As

Publication number Publication date
EP2590409A1 (en) 2013-05-08
EP3499892A1 (en) 2019-06-19
HUE043461T2 (hu) 2019-08-28
CN105872550A (zh) 2016-08-17
TWI510031B (zh) 2015-11-21
CN105872550B (zh) 2020-03-06
JP2013098988A (ja) 2013-05-20
CN103096065B (zh) 2016-06-15
SG189658A1 (en) 2013-05-31
AU2012244144A1 (en) 2013-05-16
CA2793068A1 (en) 2013-05-01
EP2590409B1 (en) 2015-01-07
EP2876883A1 (en) 2015-05-27
EP2876883B1 (en) 2019-05-01
TW201328363A (zh) 2013-07-01
EP3754989A1 (en) 2020-12-23
BR102012027968B1 (pt) 2021-12-21
HK1211155A1 (en) 2016-05-13
PL2876883T3 (pl) 2019-10-31
CA2793068C (en) 2016-07-26
HK1182243A1 (en) 2013-11-22
ES2728529T3 (es) 2019-10-25
KR101407755B1 (ko) 2014-06-17
CN103096065A (zh) 2013-05-08
KR20130048180A (ko) 2013-05-09
AU2012244144B2 (en) 2015-05-07
EP3499892B1 (en) 2020-08-12

Similar Documents

Publication Publication Date Title
US10911758B2 (en) Multi-level significance maps for encoding and decoding
BR102012029413B1 (pt) Método e decodificador para reconstruir indicadores de coeficiente significativo para uma unidade de transformada
BR112020019715A2 (pt) combinação de intrapredição dependente de posição estendida com modos angulares
JP6037341B2 (ja) 映像をデコーディングするための方法
TWI555377B (zh) 熵編碼視訊的方法與裝置、以及熵解碼視訊的方法與裝置
BR112019013645A2 (pt) estrutura em árvore multi-tipo para codificação de vídeo
TWI524780B (zh) 在變換單元內之多符號位元隱藏
BR102012027968A2 (pt) mapas de significância de nível múltiplo para codificação e decodificação
BR112014011058B1 (pt) Métodos para codificar e decodificar dados de vídeo, dispositivos compreendendo um codificador e um decodificador de vídeo e meio de armazenamento
BR112019021584A2 (pt) Método de codificação/decodificação de imagem e dispositivo para o mesmo
BR112020000166A2 (pt) aparelho para dividir uma porção de imagem melhorando a partição forçada de fronteira, codificador e decodificador compreendendo os mesmos e métodos correspondentes
BR112021009714A2 (pt) redução de bin codificado regular para decodificação de coeficiente usando limite e parâmetro rice
TWI533705B (zh) 用於內容脈絡集選擇之方法及裝置
CA2800119C (en) Methods and systems for pipelining within binary arithmetic coding and decoding
BR122020001936B1 (pt) método de decodificar um vídeo

Legal Events

Date Code Title Description
B25D Requested change of name of applicant approved

Owner name: BLACKBERRY LIMITED (CA)

B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]
B25G Requested change of headquarter approved

Owner name: BLACKBERRY LIMITED (CA)

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B25A Requested transfer of rights approved

Owner name: VELOS MEDIA INTERNATIONAL LIMITED (IE)

B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 31/10/2012, OBSERVADAS AS CONDICOES LEGAIS.