BR102012029413A2 - mapa de digitalização com significado multinível - Google Patents

mapa de digitalização com significado multinível Download PDF

Info

Publication number
BR102012029413A2
BR102012029413A2 BR102012029413A BR102012029413A BR102012029413A2 BR 102012029413 A2 BR102012029413 A2 BR 102012029413A2 BR 102012029413 A BR102012029413 A BR 102012029413A BR 102012029413 A BR102012029413 A BR 102012029413A BR 102012029413 A2 BR102012029413 A2 BR 102012029413A2
Authority
BR
Brazil
Prior art keywords
group
significant coefficient
indicators
coefficient
significant
Prior art date
Application number
BR102012029413A
Other languages
English (en)
Other versions
BR102012029413B1 (pt
BR102012029413A8 (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 BR102012029413A2 publication Critical patent/BR102012029413A2/pt
Publication of BR102012029413A8 publication Critical patent/BR102012029413A8/pt
Publication of BR102012029413B1 publication Critical patent/BR102012029413B1/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/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • 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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

varredura de mapa de significância de multi-níveis. métodos de codificar e decodificar para dados de vídeo são descritos nos quais mapas de significância de multi-níveis são utilizados nos processos de codificação e decodificação. os indicadores de coeficiente significativo que formam o mapa de significância são agrupados em grupos contíguos, e um indicador de grupo de coeficiente significativo significa para cada grupo se aquele grupo não contém indicadores de coeficiente significativo não zero. uma ordem de varredura de multi-níveis pode ser utilizado na qual indicadores de coeficiente significativo são varridos grupo a grupo. a ordem de varredura de grupo específica a ordem no qual os grupos são processados, e a ordem de varredura específica a ordem no qual indicadores de coeficiente significativo individuais no grupo são processados. o fluxo de bits pode intercalar e seus indicadores de coeficiente significativo correspondente, se houver.

Description

VARREDURA DE MAPA DE SIGNIFICÂNCIA DE MULTI-NÍVEIS
Carup w ü presente pedido se retere genericamente à compressão de dados e, em particular, a métodos e dispositivos para codificar e decodificar video utilizando mapas de si gni ficância de multi-nívei s.
An tecederu.es A compressão de dados ocorre em diversos contextos. É muito comumente utilizado em comunicação e ligação em rede de computadores para armazenar, transmitir e reproduzir informações de forma eficiente. Encontra aplicação especifica na codificação de imagens, áudio e video. Video apresenta um desafio significativo para compressão de dados devido à grande quantidade de dados exigidos para cada quadro de video e a velocidade com a qual a codificação e decodificação freqüentemente necessitam ocorrer. O estado da técnica atual para codificação de video é o padrão de codificação de vídeo ITU-T H.264/AVC. Define diversos perfis diferentes para aplicações diferentes, incluindo o perfil Principal, perfil de linha de base e outros. Um padrão de codificação de vídeo de próxima geração está atualmente em desenvolvimento através de uma iniciativa em conjunto de MPEG-ITU: codificação de video de eficiência elevada (HEVC). Há diversos padrões para codificar/decodificar imagens e videos, incluindo H.264, que utilizam processos de codificação baseados em bloco. Nesses 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 daaos sendo transformados não são os dados oe pixel efetives, porém, são dados residuais seguindo uma operação de predição. As predíções podem ser intra-quadro, isto é, isto é bloco para bloco no quadro/imagem, ou inter-quadro, isto é, entre quadros (também chamada predição de movimente). Espera-se que HEVC (também pode ser chamado ;: . 11 c ü * ώ. Γ0 0, 0 Ti 0CiT(ó C S S cl S C 3 Γ 3 C tl 0 2Γ Z S ti. i 0 S ?
Ao transformar de forma espectral os dados residuais, muitos desses padrões prescrevem o uso de uma transformada de co-seno discreta (DCT) ou alguma variante sobre a mesma. Os coeficientes de DCT resultantes são então quantizados utilizando um quantizador para produzir coeficientes de domínio de transformada quantizada, ou índices. O bloco ou matriz de coeficientes de domínio de transformada quantizada (às vezes mencionada como uma "unidade de transformada") é então codificado por entropia utilizando um modelo de contexto específico. Em H.264/AVC e no trabalho de desenvolvimento atual para HEVC, os coeficientes de transformada quantizados são codificados por (a) codificar uma posição de último coeficiente significativo indicando a localização do último coeficiente não zero no bloco, (b) codificar um mapa de significância indicando as posições no bloco (diferente da posição de último coeficiente significante) que contêm coeficientes não zero, (c) codificar as magnitudes dos coeficientes não zero, e (d) codificar os sinais dos coeficientes não zero. Essa codificação dos coeficientes de transformada quantizada frequentemente ocupa 30-80% dos dados codificados rio fluxo de bits. U η ι d a d e s d e t r a n s f c r ma d a s á o t i p ícamente N x N . Tamanhos comuns incluem 4x4, axb, íbxib, e vx32, embora outros tamanhos sejam possíveis. A codiíícaçao por entropia dos símbolos no mapa de signif icância se baseia em um modelo do contexto. No caso de um bloco de 1 urna ou croma 4x4 nu unidade de transformada (TU'· , um contexto separado é a s s c ca d o a c a d a posição de coo f ; e i e r T~ e na TU . T st o é , o codificador e decodificador rastreiam um total de 30 (excluindo as posições de canto direito inferior) contextos separados para TUs de luma e croma 4x4. As TUs de 8x8 são divididas (de forma conceptual para fins de associação de contexto) em blocos 2x2 de tal modo que um contexto distinto seja associado a cada bloco 2x2 na TU 8x8. Por conseguinte, o codificador e decodificador rastreiam um total de 16 + 16 = 32 contextos para as TUs de luma e croma 8x8. Isso significa que o codificador e decodificador mantêm rastro de e consultam 62 contextos diferentes durante a codificação e decodificação do mapa de significância. Quando TUs 16x16 e TUs 32x32 são levadas em conta, o número total de contextos distintos envolvidos é 88. Entre os 26 contextos adicionais, 13 são para TUs de luma e 13 são para TUs de croma. A atribuição dos 13 contextos às posições de coeficiente em uma TU 16x16 ou 32c32 é como a seguir. Deixe (r, c) indicar uma posição na TU, onde 0 <=r, c<=15 se a TU for de tamanho 16x16, e 0<=r, c< = 31 se a T[J for de tamanho 32x32. Então 3 contextos distintos são atribuídos às três posições (0,0), (0,1), (1,0) no canto esquerdo superior incluindo a posição DC (0, 0); 5 contextos distintos são atribuídos às posições na região { (4, c) : 2 < = r + c <5}; e os 5 últimos contextos disumos são atribuídos a posições na região { (4, c) ? 2 < = r + c <5} e os 5 últimos contextos di st i ritos sao atr roujuos ta todas as posições restantes. Exceto pelos 3 primeiros contextos para (0, 0), (0, 10) e (1,0) a derivação do contexto para uma posição na região { (r, e) : 2 <= r + c <5} depende de sua ví zi ninança di rei t a inferior. Deixe s(r, c) u e 11 o t α r v. indic a dor de si g r. i f i c â n c : a d e um coeficiente n a posição (r, c), isto é, s(r, c) - 1 se o coeficiente não for zero e s(r, c) = 1 de outro modo. 0 contexto para posição (r, c) é igual à min (s(r+i, c) +s(r, c 11) is (r + 2, c) +s (r, c:2) +s(r+l, c + 1), 4), onde min (a, b) retorna o valor menor entre a e b. o contexto de uma posição (r, c) na região restante { (r, c) : r + c >= 5} é similarmente deri vado.
Os contextos para mapas de significância 4x4 e 8x8 são determinados pela posição de bit. Os contextos para mapas de significância de 16x16 e 32x32 são na maior parte determinados pelos valores dos bits vizinhos. A determinação do contexto para os mapas de significância de 16x16 e 32x32 é relativamente intenso de modo computacional, porque na maioria dos casos o processador determina contexto por olhar os valores de indicadores significativos vizinhos, que envolve operações de acesso de memória, caras.
Sumário O presente pedido descreve métodos e codificadores/decodificadores para codificar e decodificar mapas de significância com codificação ou decodificação adaptável ao contexto. O codificador e decodificador utilizam mapas de significância de multí-níveis. Pelo menos em um caso, os mapas de multi-níveis são utilizados com unidades de transformada maiores, como TUs ifaxifa e ozxux .
Em um aspecto, o presente pedido descreve um método de reconstruir indicadores de coeficiente significativo para uma unidade transformada de um fluxo de cios do dados codificados, o f1uxo do bits incluindo -L;.ui.wad^res de grupo de coeficiente significativo, e em que cada indicador de grupo de coeficiente significativo corresponde a um grupe respectivo de indicadores de coeficiente significativo. 0 método inclui, para cada dos grupos respectivos de indicadores de coeficiente significativo em uma ordem de varredura de grupo, reconstruir o indicador de grupo de coeficiente significativo correspondente daquele grupo e reconstruir os indicadores de coeficiente significativo naquele grupo por decodificar os indicadores de coeficiente significativo a partir do fluxo de bits em uma ordem de varredura no grupo, se o indicador de grupo de coeficiente significativo correspondente for não zero, e ajustar os indicadores de coeficiente significativo em zero, se o indicador de grupo de coeficiente significativo correspondente for zero.
Em outro aspecto, o presente podido descreve um méLodo para codificar indicadores de coeficiente significativo para uma unidade transformada. O método inclui, para cada grupo respectivo de indicadores de coeficiente significativo em uma ordem de varredura de grupo, codificar indicador de grupo de coeficiente significativo correspondente daquele grupo, a menos que um caso especial se aplique, e em que o indicador de grupo de coeficiente significativo é ajustado em erro para indicar que aquele grupo correspondente contém indicadores de coe fic!ente sLgnifícativo nàn zero, e codiíicar os indicadores de coeficiente significativo naquele grupo em uma ordem de varredura no grupo, se o indicador de grupo de coeficiente significativo correspondente for não zero. rrr um aspecto, a reconstrução oos indicadores de coef icicr.tc significativo é reaii zada em uma ordem determinada, como urna ordem de varredura. Em outro aspecto, a reconstrução dos indicadores de grupo de coeficiente significativo é realizada em uma ordem determinada, que pode ser a mesma ordem determinada como utilizado com a reconstrução dos indicadores de coeficiente significativo, como a ordem de varredura. F,rr um aspecto, um indicador de grupo de coeficiente significativo é ajustado em zero se todos os indicadores de coeficiente significativo no grupo correspondente forem zero. Em outro aspecto, um indicador de grupo de coeficiente significativo é não zero se pelo menos um indicador de coeficiente significativo no grupo correspondente for não zero. Em outro aspecto, um caso especial pode resultar em um indicador de grupo de coeficiente significativo sendo não zero mesmo se todos os indicadores de coef i.ciente significativo no grupo correspondente forem zero, em cujo caso c decodificador decodi ficará todos os indicadores de coeficiente significativo de valor zero para aquele grupo correspondente a partir do fluxo de bits.
Em um aspecto adicional, o presente pedido descreve codificadores e decodificadores configurados para implementar tais métodos de codificação e decodificação.
Ainda em um aspecto adicional, o presente pedido descreve rr.i di a legível em compu tador não t rans it ór ia que armazena instruções de programa executáveis em computador que, quanao executadas, configuraram um processador para executar os métodos descritos de codificação e/ou áccodificaçao. ^uiiOi ci s ρ e o i ό s e câiGCteijoticas do presente pedido serão entendidos por aqueles com conhecimentos comuns na técnica a partir de um exame da seguinte descrição de exemplos em combinação com as figuras em anexo.
Breve descrição dos desenhos Será feita referência agora, como exemplo, aos desenhos em anexo que mostram moda 1i dades de exemplo do presente pedido, e nos quais; A figura 1 mostra, em forma de diagrama de blocos, um codificador para codificar video; A figura 2 mostra, em forma de diagrama de blocos, um cecodíficador para decodificar video; A figura 3 mostra uma unidade de transformada de exemplo contendo coeficientes de domínio de transformada quanti zada; A figura 4 mostra um mapa de significância de exemplo contendo indicadores de coeficiente significativo para a unidade de transformada da figura 3; A figura 5 mostra um mapa de sígnificância Ll de exemplo contendo indicadores do grupo de coeficiente signifrcativo para o mapa de significância da figura 4, A figura 6 mostra, em forma de fluxograma, um método de exemplo de codificar indicadores de coeficiente signi fica t ivo, A figura 7 mostra em forma de f [uxograma, um método de exemplo para reconstruir um mapa de si gniíicância a partir de dados codificados, A figura 8 mostra, em. forma de fluxograma, um cricossc de sxeri’” para decodificar e construir -l.ouiwddures do grupo dc cooficicnfo significativo; A figura 9 mostra, em forma de fluxograma, um processo de quantizaçâo otimizado de distorção de taxa de exemplo para codificação de mapa de significância de multi-níveis; A figura 10 mostra o mapa de significância LO de exemplo da figura 4 após aplicação de LI RDOQ;
A figura 11 mostra o mapa de significância LI correspondendo ao mapa de significância LO da figura 10, após Ll RDOQ; A figura 12 mostra um diagrama de blocos simplificado de uma modalidade de exemplo de um codif icador; A figura 13 mostra um diagrama de blocos simplificado de uma modalidade de exemplos de um decodi1icador; A figura 14 mostra uma unidade de transformada 16x16 com 4x4 grupos de coeficiente e uma ordem de varredura diagonal para frente; A figura 15 mostra a unidade de transformada 16x16 com 4x4 grupos de coeficientes e uma ordem de varredura diagonal para frente de multi-níveis baseada em grupo; e A figura 16 mostra, em forma de fluxograma, um método de exemplo para decodificar um mapa de significâncía.
Figura 17 mostra, em forma de fluxograma, um processo de exemplo para codificação de RDOQ de um mapa de vários níveis ae significado com uma ordem de vários níveis '’ (“ ' Π j (J ; t ri ! / d Ç d O . M- ^ - Q d ^ rn Cl f r- g V' T g Q 1 rr ·’ 1 g V p Q y~\ /"\ ps ΓΠ 1“ |0 d 1 utilizados em figuras diferentes para indicar componentes similares.
Descrição de modalidades de exemplo Na descrição que segue, algumas modalidades de exemplo são descritas com referência ao padrão H.264 para codificação de video e/ou o desenvolvimento de padrão HEVC. Aqueles com conhecimentos comuns na técnica entenderão que o presente pedido não é limitado a H.264/AVC ou HEVC, porém pode ser aplicável a outros padrões de codificação/decodi fícação de vídeo, incluindo padrões futuros possíveis, padrões de codificação de multí-visão, padrões de codificação de vídeo escalonável, e padrões de codificação de vídeo reconfigurável.
Na descrição que seguem, ao se referir a vídeo ou imagens os termos quadro, imagem, fatia, tile e grupo de fatia retangular podem ser utilizados de certo modo intercambiavelmente. Aqueles com conhecimentos na técnica reconhecerão que, no caso do padrão H.264, um quadro pode conter uma ou mais fatias. Também será reconhecido que certas operações de codificação/decodificação são realizadas em uma base quadro por quadro, algumas são realizadas em uma base de fatia por fatia, algumas imagem por imagem, algumas tile-por-tile, e algumas por grupo de fatia retangular, dependendo das exigências especificas ou terminologia da imagem aplicável ou padrão de codificação de video. Em qualquer modalidade específica, o padrão de codificação de video ou imagem aplicável pode determinar se as operações descritas abaixo são realizadas com relação a que o r o s ^ /ou farias e./ou imagens e / ou til.es e/ou grupos de ~ m * ' ,'i ^ *- rc v·' 0 v- 0 s f ^ Q ' q -fq ο χο c g q λ Dor pdnqpQri rvbp^ aqueles com conhecimentos comuns na técnica entenderão, à luz da presente revelação, que operações ou processos específicos descritos aqui e referências específicas a quadros, fatias, imagens, tiles, grupos de fatia retangular são aplicáveis a quadros, fatias, imagens, tiles, grupos de fatia retangulares, ou alguns ou todos daqueles para uma dada modalidade. Isso também se aplica a unidades de transformada, unidades de codificação, grupos de unidades de codificação, etc., como se tornará evidente à luz da descrição abaixo. 0 presente pedido descreve processos e dispositivos de exemplo para codificar e decodificar mapas de signi f icância . Um. mapa de s igni f icância c um. bloco, matriz ou grupo de indicadores que mapeiam para, ou correspondem a, uma unidade de transformada ou uma unidade de coeficientes definida (por exemplo, várias unidades de transformada, uma porção de uma unidade de transformada, ou uma unidade de codificação). Cada indicador indica se a posição correspondente na unidade de transformada ou a unidade especificada contém ou não ou coeficiente não zero. Em padrões existentes, esses indicadores podem ser mencionados como indicadores de coeficiente significativo. Em padrões existentes, há um indicador por coeficiente e o : noτeacor e um oit que é zero se o coeficiente correspondente for zero e é ajustado eit um se o coeficiente correspondente for não zero. O termo "mapa de stgnificância" como utilizado aqui pretende se referir a uma matriz ou conjunto ordenado de indicadores de coeficiente significativo para uma unidade de t ransf orrr.ada, oon.c será entendido a partir da descrição abaixo, ou uma unidade definida de coeficientes, que serão evidentes a partir do contexto das aplicações.
Embora os exemplos descritos aqui se refiram a mapas de signi.fi cância, os processos de codif i cação e decodificação de multi-níveis podem ser aplicados a outros elementos de sintaxe em codificação de video, por exemplo, níveis de coeficiente, coeficientes de filtro, e vetores de movimento (após bínarização), que podem apresentar estruturas de grupo. Por exemplo, um grupo local de níveis de coeficiente podería ser todo um com elevada probabilidade. Sirnilarmente, um grupo local de vetores de movimento podería ser todo zero em uma direção (movimento horizontal zero, por exemplo), ou um conjunto de coeficientes de filtro pode ser todo zero em faixas de freqüência vi zinhas.
Será também entendido, à luz da seguinte descrição, que a estrutura de codificação e decodificação de multi-níveis podería ser aplicada em certas situações, e aquelas situações podem ser determinadas a partir de informações secundárias como tipo de teor de video (vídeo natural ou gráfico como identificado em sequência, imagem ou cabeçalhos de fatia) . Por exemplo, dois níveis podem ser utilizados para video natural, e três niveis podem ser utilizados para gráfico (que e tipicamente muito mais esoarso) . A)naa outra possabi I idade e fornecer um indicador em uma da sequência, imagem ou cabeçalhos de latia para indicar se a estrutura tem um, dois, ou três níveis, desse modo permitindo ao codificador a flexibilidade de escolher a estrutura mais apropriada para o presente conteúdo.
Rsf Crê^iCÍa 0 £ θ Ϊ. t 3 âÇOT3 3 f igUIâ 1 f qijg most Γ3 , em forma de diagrama de blocos, um codificador 10 para codificar o vídeo. Faz-se referência também à figura 2, que mostra um diagrama de blocos de um decodi ficado r 5 0 para decodificar vídeo. Será reconhecido que o codificador 10 e decodi f.i cador 50 descritos aqui podem ser individualmente implementados em um dispositivo de computação de propósito geral ou especifico de aplicação, contendo 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 circuito integrado de aplicação específica, por exemplo, ou por meio de instruções de programa armazenadas executáveis por um processador de propósito geral. 0 dispositivo pode incluir software adicional, incluindo, por exemplo, um sistema operacional para controlar funções de dispositivo básico. A faixa de dispositivos e plataformas na qua.1 o codificador 10 ou decodifιcador 50 pode ser implementado será reconhecida por aqueles com conhecimentos comuns na técnica considerando à seguinte descrição. O codificador 10 recebe uma fonte de video 12 e produz um fluxo de bis codificado 14. O decodif icador 50 recebe o fluxo de bits codificado 14 e transmite um quadro de video decodificado 16. 0 codificador 10 e decodificador 5 0 podem ser rv ,. , conrigurados para operar em conformidade com d i v e r s o s η = h r 1 r-es de compressão de video. Por exempi o, o codificador In i , . ,. , . ,, . , , , e decodif ícador 50 podem ser em conformidade com H.264 ' Em outras modalidades, o codificador 10 e decodificado1'- ε _ , ~ , 50 podem se conformar a outros padrões de comnressào , , Ί . , Ί~ , , _ video, incluindo evoluçoes do padrao H.264/AVC come HEVC . 0 c°dificador 10 inclui um preditor espacial 21, um seletor de modo de codificação 20, processador de transformada 22, quantizador 24 e codificador de entropia 26. Como será reconhecido por aqueles com conhecimentos comuns na técnica, o seletor de modo de codificação 20 determina o rr.odo de codificação apropriado para a fonte de video, por exemplo, se o presente quadro/fatia é do tipo I, P ou B, e se unidades de codificação especificas (por exemplo, macroblocos, unidades de codificação, etc.) no guadro/fatia são inter ou intra-codifiçados. O processador de transformada 22 executa uma transformada sobre os dados de domínio espacial. Em particular, o processador de transformada 22 aplica uma transformada baseada em bloco para converter dados de domínio espacial em componentes espectrais. Por exemplo, em muitas modalidades uma transformada de co-seno discreta (DCT) é utilizada. Outras transformadas, como uma transformada de seno discreta ou outras podem ser utilizadas em algumas instâncias. A transformada à base de bloco é realizada em uma unidade de codificação, macrobloco ou base de sub-bloco, dependendo do tamanho dos macroblocos ou unidades de codificação. No padrão H.264, por exemplo, um macrobloco 16x16 típico contém dezesseis blocos de transformada 4x4 e o processo DCT é realizado nos blocos 4x4. Em alguns casos, os blocos ae transtornada podem ser 8xtí, significando que na quatro blocos de transformada por macrobloco. Ainda em outros casos, os blocos de transformada podem ser de outros tamanhos. Em alguns casos, um macrobloco 16x16 pode incluir uma combinação de não sobreposição de blocos de t rsrsf o irms d 3 4x4 0 8x8. A aplicação da transformada baseada em bloco a um bloco de dados de pixels resulta em um conjunto de coeficientes de domínio de transformada. Um "conjunto" nesse contexto é um conjunto ordenado no qual os coeficientes têm posições de coeficiente. Ern algumas instâncias c conjunto de coeficientes de domínio de transformada pode ser considerado como um "bloco" ou matriz de coeficientes. Na descrição da presente invenção as frases "um conjunto de coeficientes de domínio de transformada" ou "um bloco de coeficientes de domínio de transformada" são utilizados de forma íntercambiável e pretendem indicar um conjunto ordenado de coeficientes de domínio de transformada. O conjunto de coeficientes de domínio de transformada é quantizado pelo quantizador 24. Os coeficientes quantizados e informações associadas são então codificadas pelo codificador de entropia 26. O bloco ou matriz de coeficientes de domínio de transformada quantizada pode ser mencionado aqui como uma "unidade de transformada".
Quadros/fatias intra-codifiçados (isto é, tipo I) são codificados sem referência a outros quadros/fatias. Em outras palavras, não empregam predição temporal.
Ent retzanto, quadros int ra-codi. f içados baseiam em pr edição espaciai no quaato/idua, como uuscraao na tigura i pei.o preditor espacial 21. Isto é, ao codificar um bloco especifico os dados no bloco podem ser comparados com os dados de pixels próximos nos blocos já codificados para aquele quadro/fatia. Utilizando um algoritmo de predição, os ciados Hc ·ρ q m +- 0 Ho b 1 oco Dode^ s^ convert i dos cm dados residuais. 0 processador de transformada 22 então codifica os dados residuais. H2 64, por exemplo, prescreve nove modos de predição espaciais para blocos de transformada 4x4. Em algumas modalidades, cada dos nove modos pode ser utilizado para processar independentemente um bloco, e então otimização de distorção de taxa é utilizada para selecionar o melhor modo. 0 padrão H.264 também prescreve o uso de predição de movimento/compensação para tirar proveito de predição temporal. Por conseguinte, o codificador 10 tem um loop de realiraentação que inclui um desquantizador 28, processador de transformada inversa 30, e processador de desbloqueio 32. O processador de desbloqueio 32 pode incluir um processador de desbloqueio e um processador de filtração. Esses elementos espelham o processo de decodificação implementado pelo decodificador 50 para reproduzir o quadro/fatia. Uma armazenagem de quadro 34 é utilizada para armazenar os quadros reproduzidos. Desse modo, a predição de movimento é baseada no que serão os quadros reconstruídos no decodificador 50 e não nos quadros originais, que podem diferir dos quadros reconstruídos devido à compressão de perda envolvida em codificação/decodificação. Um preditor de movimento 36 üííIizd os quadros/fatias armazenadas na armazenagem de quadros r>4 como quadros/fat tas de fonte para comparação com um quadro ar.ua 1 para fins de identificar blocos similares. Por cor-segu i.nre, para macroò_Loccs ou unidades de codificação as quais predição de movimento é aplicada, os "uudou οι- f r h :! o" que o processador de transformada 22 • ' 'ò - ' ' m c:; m cr rn q cç ΓΩ S ^ dUa ^ 0 o y qpm ο νορος C; Cl 0 predição de movimento. Per exemplo, pode incluir informações referentes ao quadro de referência, um deslocamento espacial ou "vetor de movimento", e dados de pixel residuais que representam as diferenças (caso haja) entre o bloco de referência e o bloco atual. Informações referentes ao quadro de referência e/ou vetor de movimento podem não ser processadas pelo processador de transformada 22 e/ou quantiizador 24, porém em vez disso podem ser f o r n e c: i .das ao codi f 1 c a d o r de entropia 26 p a. r a c o d i f i c a r como parte do fluxo de bits juntamente com os coeficientes quantizados.
Aqueles com conhecimentos comuns na técnica reconhecerão os detalhes e possíveis variações para implementar codificadores de video. O decodificador 50 inclui um decodificador de entropia 52, desquantizador 54, processador de transformada inversa 56, compensador espacial 57 e processador de desbloqueio 60. O processador de desbloqueie 60 pooe incluir processadores de filtração e desbloqueio. Um buffer de quadros 58 fornece quadros reconstruídos para uso por um compensador de movimento 62 em aplicar compensação de movimento. O compensador espacial 57 representa a operação de recuperar os dados de video para um bloco intra- codií içado especifico a partir de um bloco anteriormente decod;fi cado· O fluxo de bits 14 é recebido e decodificado pelo decodifícador de entropia 52 para recupera os coeficientes quantizados. Informações secundárias também podem ser recupera d a s d u r a n t e 0 o r o c e s s o ' i e d e o o d i f i <- a ç ã o d e fc.u t X ομ-ucs , ci_q αΰ:ά 3 Ou 3 q U a I. 5 puuC-.. O0 * .. _uun u o - oop i.e compensação de movimento para uso em compensação de movimento, se aplicável. Por exemplo, o decodificador de entropia 52 pode recuperar vetores de movimento e/ou informações de quadro de referência para macroblocos inter-codificadcs.
Os coeficientes quantizados são então desquantizados pelo desquantizador 54 para produzir os coeficientes de domínio de transformada, que são então submetidos a uma transformada inversa pelo processador de transformada inversa 56 para recriar os "dados de vídeo". Será reconhecido que, em alguns casos, como com um rnacrobJoco intra-codifiçado ou unidade de codificação, os "dados de video" recriados são os dados residuais para uso em compensação espacial em relação a um bloco anteriormente decodificado no quadro. O compensador espacial 57 gera os dados de video a partir dos dados residuais e dados de pixel a partir de um bloco anteriormente decodificado. Em outros casos, como macroblocos inter-codifiçados ou unidades de codificação, os "dados de vídeo" recriados a partir do processador de transformada inversa 56 são os dados residuais para uso em compensação de movimento em relação a um bloco de referência a partir de um quadro diferente. Compensação tanto espacial comc de movimento pode ser mencionada aqui corro "operações de predição." O compensador oe movimento 62 localiza um bioco de referência no buffer de quadro 08 especificado para um macrobioco inter-codifiçado ou unidade de codificação especifica. Faz isso com base nas informações de quadro de v o f tp> v 0 p C'' i 0 o \7 p rq p r] 0 rrj p \ f \ nnp n f q ί f ι p- 0 pj q p 0 pp T α C G aD 1 C ^ ^ *- çs. v- — p» 3. q -p —' pr; ^ O ' ' 1 ’ rv -! W ^ ^ 0 p| o nno’ -f-i oqopo Fornece então os dados de pixe1 de bloco de referência para combinação com os dados residuais para chegar aos dados de vídeo reconstruídos para aquela unidade de codificação/macrobloco.
Urri processo de desbloqueio/f ilt ração pode ser então aplicado a um quadro/fatia reconstruída, como indicado pelo processo de desbloqueio 60. Após desbloqueio/filtração, o quadro/fatia é transmitido como o quadro ae vídeo decodificado 16, por exemplo, para display em um dispositivo de display. Será entendido que a máquina de reprodução de video como um computador, conversor de sinais de freqüência, DVD ou tocador de Blu-ray, e/ou dispositivo portátil móvel, pode armazenar quadros decodificados em uma memória antes de exibição em um dispositivo de saída.
Espera-se que codificadores e codificadores em conformidade com HEVC tenham muitas dessas características iguais ou similares.
Codificação de mapeamento de significância Como observado acima, a codificação de entropia de urr. bloco ou conjunto de coeficientes de domínio de transformada quantizados inclui codificar o mapa de significância (por exemplo, um conjunto de indicadores de coeficiente significativos) para aquele bloco ou conjunto de coeficientes dc domínio de transformada auanf: /ados. u mapa dc signi f icâr.cia é um mapeamento binário do b l oco indicando em quais posições (diferentes da última posição) coeficientes não zero aparecem. 0 bloco pode ter certas características com, as quais é assoei ado. Por exemplo, pode ser cie uma fatia intra-ccdificada ou uma fatia ir.ter-codif içada. Pode ser um bloco luma ou um bloco croma. 0 valor QP para a fatia pode variar de fatia para fatia. Todos esses fatores podem ter um impacto sobre o melhor modo no qual codificar por entropia o mapa de significância. O mapa de significância é convertido em um vetor de acordo com a ordem de varredura (que pode ser vertical, horizontal, diagonal, ziguezague, ou qualquer outra ordem de varredura determinada pelo padrão de decodificação aplicável). A varredura é tipicamente feita em ordem "inversa", isto é, iniciando com o último coeficiente significativo e trabalhando de volta através do mapa significativo em. direção inversa até que o indicador em í 0, 0 ] seja atingido. Na presente descrição, o termo "ordem cie varredura" pretende significar a ordem na qual indicadores, coeficientes ou grupos, conforme o caso são processados e podem incluir ordens que são mencionadas coloquialmente como "ordem de varredura inversa".
Cada indicador de coeficiente significativo é então codificado por entropia utilizando o esquema de codificação adaptável de contexto aplicável. Por exemplo, em muitas aplicações um esquema de codificação aritmética binária adaptável em contexto (CABAC) pode ser utilizado.
Gutras implementações podem utilizar outros codecs adaptáveis em contexto com binarização. Os exemplos incluem codificação aritmética binária (BAC), codificação variável para variável ÍV2V), e codificação de comprimento variável para fixo (V2E) . com mapas 4x4 e 8x8, um contexto é *· ·-·· · ^ " Cl C C' } 2Γ ít O íi O m ^ o q ί id o rd pc j-x f- /\θ f od ’ f 1 Ca r O t) 1 > 11, d 1. c a o o x o e „ o e f 1 c i o n t e sig n i f i c a t i v c ; n a que .1 a pos i ç ã o de bits, o contexto atribuído e o histórico de 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 video existentes, a atribuição de contexto é predeterminada para o codificador e decodificador. Por exemplo, com um bloco luma 4x4, o padrão HEVC de esboço atual prescreve que cada posição de bits no mapa de sígní f í cância 4x4 tem um contexto exclusivo. A exclusão da última posição que significa 15 contextos são rastreados para codificação de mapas de signif icância de luma 4x4. Para cada posição de bit, o contexto atribuído àquela posição determina a probabilidade estimada associada a um LPS naquela posição. 0 valor de bit efetivo é então codificado utilizando aquela probabilidade estimada. Finalmente, o contexto atribuído àquela posição é atualizado com base no valor de bit efetivo. No decodificador, os dados codificados são decodificados utilizando o mesmo modelo de contexto. Um contexto para cada posição de bits é rastreado e utilizado para determinar a probabilidade estimada para decodificar dados para recuperar bits para aquela posição.
Com mapas de significância de 16x16 e 32x32, o contexto para um significante é (na maior parte) baseado em valores de indicador de coeficiente significativo vizinhos. Entre os 13 contextos utilizados para mapas de s ig η i ficância 16x16 e 32x32, há certos contextos dedicados â posição de bits em. [0,0) e a posições de bits vizinhas, porém a maioria dos indicadores de coeficiente aip.dl.vaOl.vc toma um de cinco contextos que dependem dos valoreis cumulativos de indicadores de coeficiente significativo. Nessas instâncias, a determinação do contexto correto para um indicador de coeficiente significativo depende de determinar e somar os valores dos i.ndicadores de coeficiente significativo em locais vizinhos (tipicamente cinco locais, porém podería ser um número maior ou menor em alguns casos) . Isso envolvei múltiplos acessos de memória, que podem ser caros em exigências de largura de banda de memória. Além disso, em muitas instâncias os mapas de sígnificância de 16x16 e 32x32 contêm um número grande de zeros. Por conseguinte, há um custo substancial envolvido em codificar e transmitir mapas grandes que têm poucos valores de coeficiente.
De acordo com um aspecto do presente pedido, o codificador e decodificador utilizam mapas de significância de multi-níveis para certas unidades de transformada. Nos exemplos descritos abaixo, os mapas de significância de multi-níveis são utilizados para unidades de transformada de tamanho 16x16 e 32x32: entretanto, será entendido que podem ser utilizados para 8x8 ou 64x64 ou unidades de transformada de outro tamanho em algumas modalidades.
Os indicadores de coeficiente significativo são agrupados. Cada indicador de coeficiente significativo está compreendido em um dos grupos. Para simplicidade em muitas modalidades os grupos são formados por (de forma conceptual) dividir a estrutura de unidade de transformada em blocos. Por exemplo, um mapa de 16x16 pode ser dividido em blocos 4x4 cada contendo dezesseis das posições de coe f 1 e i ente. drr mapa de 12x32 pode ser di vidido cm blocos d X ^ ~ cx Cl ca X ^ C' Γ' d X c' P S S C Γ ^ ci 0 ^ 0Í2 c: ηρς i dQpq rjp coeficiente. Os indicadores de coeficiente significativo são desse modo agrupados com base em que estão compreendidos nesses blocos definidos na estrutura de matriz. Em outro exemplo, os mapas tanto 16x16 como 32x32 podem ser dividi.dos em blocos 4x4 cada contendo dezesseis das posições de coeficiente.
A figura 3 mostra uma unidade de transformada 16x16 de exemplo, 100 (a matriz de coeficientes de domínio de transformada quanti zada) . Para f ins de indexar, a posição de bit na unidade de transformada pode ser especificada por [xC, yC] em que xC = 0, 1, 2, ... 15 e yC = 0, 1, 2, ... 15. Utilizando (por exemplo, uma ordem de varredura diagonal, será observado que o último coeficiente significativo nesse exemplo está em [12, 10] como indicado pelo numeral de referência 112.
Referência é feita agora também à figura 4, que mostra um mapa de significância de exemplo 102. O mapa de significância 102 contém os indicadores de coeficiente significativo que são gerados a partir da unidade de transformada de exemplo são mostrados na figura 4. Será observado que um indicador de coeficiente significativo aparece em toda posição de bit na ordem de varredura de [0,0! para cima até, porém excluindo o último coeficiente sιçni íicdtivc em 112, 10J . O _nd i cador de coeficiente significativo em cada posição de Dit para o quai na um coeficiente não zero na unidade de transformada 100 é ajustado em 1, ao passo que cada indicador de coeficiente significativo em cada posição de bit no qual há um coeficiente zero é ajustado em: zero. 0 mapa de s i gr. i f icâr.c i a 102, isto é, o conjunto de indicadores de coeficiente significativo, pode ser agrupado com base em uma divisão uniforme da estrutura de unidade de transformada em blocos contíguos em uma modalidade. 0 tamanho da unidade de transformada pode determinar o tamanho dos blocos. No caso de uma unidade de transformada 16x16, os blocos podem ser 4x4 em algumas modalidades. Os agrupamentos são ilustrados na fi.gura 4 pelas linhas demarcando os blocos 4x4. Uma unidade de transformada maior, como uma unidade de transformada 32x32 pode ter seus indicadores de coeficiente significativo agrupados em blocos 4x4, blocos 8x8, ou blocos contíguos de outros tamanhos. Em uma modalidade, grupos de coeficiente 4x4 são utilizados para unidades de transformada de tamanhos 16x16, 4x16, 16x4, 8x32, 32x8 e 32x32.
Embora os exemplos dados aqui utilizem grupos definidos como blocos quadrados contíguos por simplicidade, a presente aplicação não é limitada a grupos quadrados. Grupos podem ser formados como blocos retangulares em algumas modalidades. Ainda em outras modalidades, outros formados podem ser utilizados. Por exemplo, com uma ordem de varredura diagonal, pode ser vantajoso utilizar grupos formados de fatias diagonais da unidade de transformada, em cujo caso alguns dos grupos podem ser de formato de certo γη. ο d ο trapezoidal. Por exemplo, grupos retangulares podem snr utilizados como ordens de varredura horizontal ou vertical. Em um exemplo, com uma unidade de transformada 8x8, grupos de coeficiente 2x8 podem ser utilizac^os se uma varredura horizontal for empregada, e grupos de coeficiente 8x2 podem ser utilizados se uma varredura vertical for empregada. Outras variações serão e^^endidas por aqueles versados na técnica.
Um mapa de signif icância dc nivel mais elevado correspondendo à matriz de grupos pode ser então gerado. 0 mapa de significância de nivel mais elevado é um conjunto ordenado de indicadores de grupo de coeficiente significativo. Há um indicador de grupo de coeficiente significativo para cada grupo contendo pelo menos um indicador de coeficiente significativo. 0 grupo contendo o último coeficiente significativo não necessita ser incluído no mapa de significância de nível mais elevado porque já será conhecido como contendo pelo menos um coeficiente não zero, isto é, o último coeficiente significativo. O mapa de signif icância pode ser mencionado como o mapa de nivel 0, ou L0. 0 mapa de significância de nivel mais elevado (isto c, contendo os indicadores de grupo de coeficiente significativo) pode ser mencionado como o mapa de nível 1, ou LI . A figura 5 ilustra o mapa de significância de nivel mais elevado Ll 104 correspondendo ao mapa dei significância de exemplo 102 mostrado na figura 4. Será observado que o mapa Ll 104 contém um indicador de grupo de coeficiente significativo para cada grupo que contém pelo menos um indicador de coeficiente significativo. Se quaisquer aos xnaicadcres de coe í i ciente significativo no q rupo forem não zero, então o indicador de q rupo de coeiic:ente sigm f icat i vo é definido em um . De out ro modo, é ajustado em zero. Δ indexação dos grupos pode ser especificada por [xGC, yGC] em que nesse exemplo xCG = 0, 1 , 2, 3 e yCG = 0, 1, 2, 3. 0 grupo contende c último coeficiente significativo está em [3, 2]. 0 grupo em [3, 3] não contém, quaisquer indicadores de coeficiente significativo, então não é .1 nc 1 uído no mapa L1 .
Os indicadores de grupo de coeficiente significativo podem ser convertidos em forma de vetor ern uma ordem de varredura, em algumas modalidades. A ordem de varredura pode ser igual à ordem de varredura especificada para uso com a unidade de transformada genericamente. Em uma modalidade, o indicador de grupo de coeficiente significativo pode utilizar uma ordem de varredura predefinida que pode ser diferente da ordem de varredura selecionada para a unidade de transformada. Em alguns casos, o mapa LI pode excluir certos grupos como o grupo [0, 0] ou o grupo de último coeficiente significativo, que terá um valor de indicador presumido, como será descrito adiciona Imente abai xo.
Será reconhecido que o mapa LI não necessita ser derivado diretamente do mapa L0, porém em vez disso pode ser derivado de varredura dos coeficientes na unidade de transformada na ordem de varredura.
Será também reconhecido que mapas de nivel mais elevado adicionais podem ser utilizados em algumas modalidades. Por exemplo, se a unidade de transformada for uma unidade de transformada 64x64, o mapa Ll pode ser baseado em dividir a unidade de transformada em 256 grupos 4x4 . Desse modo, o mapa Ll seria um mapa 1 6x16 contendo indicadores de grupo Ll . IJm mapa L2 adicional pode ser gerado por agrupar os indicadores Ll em um conjunto adicionai de blocos 4x4 Ç cada dos quais correspondería a um grupo de 16xL6 coeficientes da unidade de transformada). Níveis adicionais de abstração e/ou granularidade podem ser empregados em outras modalidades.
Faz-se referência agora à figura 6, que mostra, em forma de fluxograma, um processo de exemplo 200 para codificar indicadores de coeficiente significativo. O processo 200 começa em operação 202 com o codificador de t e rrni nando os indicadores de coef icien t;e s i gn i f i ca t ivo e os indicadores de grupo de coeficiente significativo. Em uma modalidade, o codificador varre o bloco de transformada na ordem de varredura para determinar o último coeficiente significativo e o conjunto de indicadores de coeficiente significativo. Os indicadores de grupo de coeficiente significativo podem ser determinados durante a mesma varredura (embora certa quantidade de armazenagem de valores possa ser utilizada em implementações práticas visto que a ordem de varredura pode envolver cruzar através de múltiplos blocos; em alguns casos, a determinação do indicador de grupo de coeficiente significativo é feita quando o codificador determina ter varrido o último coeficiente para aquele grupo, por exemplo, o coeficiente de saída). Em algumas implementações, o codificador pode executar uma segunda varredura do mapa de significância L0 ou da unidade de transformada para determinar os indicadores de grupo de coeficiente significativo.
Em operação 204, para cada rndrcador de grupo de coeficiente significativo, o codificador determina o c o r. texto para utilizar e então codi f ica por entropia aquele indicador de grupo de coeficiente significativo com base no c o n. t o x t o d e t e rmi nado . O s i nd í o adores de grupo de Coeficiente significativo podem, ser processados em. uma ordem prescrita. Em algumas modalidades, a ordem prescrita é igual à ordem de varredura para a unidade de transformada. O número de contextos e sua determinação podem ser estruturados em qualquer modo apropriado. Um conjunto de exemplo de contextos e método para determinar contextos para indicadores de grupo de coeficiente significativo é descrito posteriormente abaixo.
Tendo codificado o conjunto de indicadores de grupo de coeficiente significativo, o codificador então codifica os indicadores de coeficiente significativo. Em operação 206, o codificador (trabalhando em ordem de varredura) determina o contexto de e codifica cada indicador de coeficiente significativo se aquele indicador de coeficiente significativo cair em um grupo para o qual o indicador de grupo de coeficiente significativo for ajusuado em ] . Se o indicador de grupo de coeficiente significativo correspondente for aj ustado em zero, então qualquer dos indicadores de coeficiente significativo naquele grupo não é codificado, isto é, são pulados durante o processo de codificação por entropia.
Por conseguinte, após o processo 200 o codificador produziu um fluxo de bits de dados codificados que contém os indicadores de grupo de coeficiente significativo codificados e os indicadores de coeficiente siqnificat ivo codificados que estão compreendidos em um grupo que tem pelo menos um indicador de coeficiente significativo não zero. O fluxo de bits não inclui nenhum indicador do coeficiente significativo a partir de qualquer grupo que não tenha pelo menos um indicador de coeficiente 3i gn i f _ ca tivo nao zero.
No decodificador. Os indicadores de coeficiente significativo necessitam ser reconstruídos a partir dos dados codificados do fluxo de bits. Faz-se referência agora à figura 7, que mostra, em forma de fluxograma, um processo de exemplo 300 para reconstruir indicadores de coeficiente significativo a partir de um fluxo de bits de dados codificados. 0 fluxo de bits pode ser recebido através de uma conexão de rede, isto é, streamed, ou lido de uin meio legível em computador, como urna memória (por exemplo, memória flash, etc.) ou um disco de armazenagem (por exemplo, DVD, BluRay™, CD-ROM, etc.) o processo 302 é aplicado no processo de reconstruir uma unidade de transformada era um decodificador. Não mostrado é a decodificação de informações de cabeçalho, tanto para a seqüência como para cada fatia ou imagem (dependendo da sintaxe do padrão de codificação de video em uso) .
Em operação 302, a posição do último coeficiente significativo é decodificada a partir do fluxo de bits. Essas informações podem ser representadas em qualquer sintaxe aplicável. Alguns padrões prevêem que o último coeficiente significativo deve ser especificado utilizando notação de matriz, por exemplo, local baseado em x e y na unidade de transformada; alguns padrões prevêem que o últ imo coeficiente significativo deve ser sinalizado utilizando um. vetor de 0's com um 1 na posição de último coeficiente significativo, onde o vetor é mapeado para a unidade de transformada pela ordem de varredura. Qualquer sintaxe apropriada para especificar o ultimo coeficiente C J Γ 1 f 1 Γ" £3 T ' \? og p p, Ç0r ] 1 m Ί 1 ί '7 P3 ÇjJ Τ'! 0} pn0 r;3 (Λ jtj C~) 3 0 P* *·’ γ~· v~ q fç ^ /* "'· CC ' « -· Τ'! /-"J ^ V m o '' J p, ζ-γ -ν' ’ Ί γ-'ν rv Ή Pi *. S ί-Λ ‘—> pv O *- C-Λ Λγ* C-Λ. ''-O —- O- I j _- . — Λ - '—Λ C-Λ .—Λ V - i- Λ - -—; \__ ^ \—Λ c oe f icie nt e s ig ni ficativo são decodificados a partir do fluxo de bits. Os indicadores de grupo de coeficiente significativo podem ter sido codificados por entropia utilizando qualquer esquema de binarização aplicável é especificado pelo padrão ou especificado nas informações de cabeçalho. Por exemplo, codificação aritmética binária adaptável em. contexto pode ser utilizada em algumas instâncias. Os indicadores de grupo de coeficiente significativo são decodificados por determinar o contexto para cada posição de indicador (posição de bit no mapa de significância de nivel mais elevado - por exemplo, o mapa de significância Ll) e então decodificar o valor de indicador a partir do fluxo de bits e atualizar o contexto com base no valor de indicador. 0 tamanho do conjunto de indicadores de grupo de coeficiente significativo é conhecido porque a ordem de varredura é conhecida e o último coeficiente significativo foi identificado na operação 302; desse modo, o tamanho do mapa de significância Ll é determinado. No caso de grupos não divididos uniformemente, uma sinalização apropriada dos tamanhos de grupo e posições pode ser fornecida na sintaxe.
Como observado acima, cada indicador de grupo de coeficiente significativo corresponde a um respectivo dos grupos contíguos definidos para a unidade de transformada. Um ou mais dos indicadores de coeficiente significativo está compreendido em cada desses grupos tendo um indicador de grupo de coeficiente significativo. Por conseguinte, cada indicador de grupo de coeficiente significativo corresponde 3 um grupo respectivo dos indicadores de coeficiente signiricativo.
Após decodificar o conjunto dos indicadores de grupo de coeficiente significativo, então as operações restantes para reconstruir o mapa de significância, isto é, o conjunto de indicadores de coeficiente significativo, são executadas na ordem de varredura prescrita. 0 processamento começa a partir do último coeficiente significativo (porérr. excluindo a posição de último coeficiente significativo, uma vez que já é conhecido conter um coeficiente não zero) . Em operação 304, para cada indicador de coeficiente significativo o decodificador determina se seu indicador de grupo de coeficiente significativo correspondente é zero. Se o indicador de grupo de coeficiente significativo correspondente é não zero, então um indicador de coeficiente significativo é decodificado a partir do fluxo de bits como indicado por operação 306. Isto é, se o indicador de grupo de coeficiente significativo associado ou correspondente indicar que o grupo pode conter pelo menos um. coeficiente não zero, então o decodificador decodifica um indicador de coeficiente significativo a partir do fluxo de bits para a posição atual.
Se o indicador de grupo de coeficiente significativo associado ou correspondente for zero, isto é, indicar que não há coeficientes não zero no grupo, então o aecodií Lcador a insta ou reconstrói o indicador de coeficiente signi ficativo atual como um zero, corno indicado por operação 308. Não decodifica o mesmo a partir do fluxo de bi t s.
Na operação 310, o decodificador determina se cl T- ", — Cí ^ \ .0 " 0 0 " W 0 n v~ Q 0 /H 0 ττρ ^ 0 CÍ 'J cr m coeiiciente no canuo esquerdo superu_or oa unrdade oe transformada, por exemplo, [0, 0] . Em caso positivo, então o processo 300 termina; em caso negativo, então o decodi£lcador move para a próxima posição na ordem de varredura na operação 312 e repete as operações 306 e 308 para reconstruir o indicador de coeficiente significativo para a próxima posição.
Será reconhecido que nessa modalidade, a ordem de varredura não resulta em reconstruir todos os indicadores de coeficiente significativo de um grupo antes de mover sobre o grupo seguinte. Em vez disso, a ordem de varredura (dependendo da ordem de varredura e da geometria de grupo) varre através dos limites do grupo de tal modo que o decodificador reconstrói alguns indicadores de um grupo, alguns de um grupo adjacente, etc., trabalhando seu caminho de volta até a posição [0, 0] na ordem de varredura. Um processo de varredura será descrito adicionalmenre abaixo que evita esse problema.
Pode haver casos especiais que são considerados nos processos de codificação e decodificação para poupar bios. Por exemplo, como observado acima, o grupo contendo o último coeficiente significativo terá sempre um indicador de grupo de coeficiente significativo que indica um coeficiente não zero, de modo que o indicador de grupo de cceficier.ce significativo não necessita ser codificado e transmitido para o decodificador. O codificador sempre codifica os indicadores de coeficiente significativo para aquele grupo, e o decodificador é confrgurado para sempre codificar os indicadores de coeficiente significativo para dulí ü C ci 0 O 6bp6Cidi- C[U0 p O Q ti 5ΘΓ ΙΓιΟα. uIQO ΘΓΓι algumas modalidades é sempre codificar e decodificar o primeiro grupo. Esse grupo contém um coeficiente DC em [0, OJna unidade de transformada. A probabilidade desse grupo não conter coeficientes não zero é extremamente baixa. Por conseguinte, em vez de transmitir um indicador de grupo de coeficiente significativo para o grupo [0, 0], o codificador pode ser configurado para sempre codificar os indicadores de coeficiente significativo daquele grupo e o decodificador pode ser configurado para sempre decodificar os indicadores de coeficiente significativo 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 o grupo abaixo de um grupo especifico ambos contêm 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 decodificador podem presumir que qualquer grupo que tenha um grupo vizinho direito e grupo vizinho inferior que ambos contêm coeficientes não zero, então aquele grupo tem coeficiente não zero. Desse modo, com relação a certo grupo, se o indicador de grupo de coeficiente significativo para o grupo à direita for ajustado em 1, e se o indicador de grupo ae coeficiente significativo para o grupo abaixo for ajustado em 1, então o codificador não codifica um indicador de grupo de coeficiente significativo para certo grupo e sempre o codificador para os indicadores de coeficiente significativo para certo grupo. O decodificador r 0 ο ο π h 0 c θ r qijp os v i zinhos ci í ϊ7 θ i_ t~. o 0 inferior ti êro indicdGoiGs cÍ0 yrupo d0 coeficiente sιρηifics11ντο inciicâ.nci.o coeficientes não zero, assim assumirá automaticamente que certo grupo tem coeficientes não zero e decodificará os indicadores de coeficiente significativo.
Faz-se referência agora à figura 8, que mostra operação 304 da figura 7 com detalhe adicional para refletir uma modalidade de exemplo da manipulação dos casos especiais descritos acima. A operação 304 inclui uma operação 304-1 na qual o indicador de grupo de coeficiente significativo para o grupo contendo o último coeficiente significativo é ajustado em 1. A localização do último coeficiente significativo é decodificado a partir do fluxo de bits em uma operação anterior (não mostrada). O decodificador então move através dos grupos na ordem de varredura. Como observado na operação 304-2, o decodíficador move a partir de/para o grupo seguinte na rodem de varredura a partir do grupo contendo o último coeficiente significativo. Para esse grupo, o decodificador avalia se o indicador de grupo de coeficiente significativo para o grupo à direita e o indicador de grupo de coeficiente significativo para o grupo abaixo do grupo atual são iguais a 1. Inicialmente o decodificador não terá indicadores à direita e abaixo porque iniciou há pouco, porém posteriormente na ordem de varredura (quer π ο r i ο η t a I, vertica : ou diago n a 1 } o d e codificador p o de às vezes Ler r ecuiisi ruiao maicadnres de grupo de coeficiente significativo nessas posições em relação ao grupo atual (para grupos localizados na borda inferior da unidade de transformada, o desedificador pode não ter um indicador para um aruoo abai xo! . Se esses dois grupos adjacentes forem ajustados em. 1, então a probabilidade dc grupo atuai também ser ajustado em 1 é suficientemente elevada que tanto o codificador como decodificador presumem que é ajustado em. um.. Por conseguinte, na operação 304-6, o decodificador ajusta o indicador de grupo de coeficiente significativo em 1 se a condição de caso especial for atendida. De outro modo, o decodificador move para a operação 304-4. Em outra modalidade, esse caso especial pode ser modificado para ser baseado nos indicadores de grupo de coeficiente significativo de outros grupos adjacentes, ou outros grupos.
Na operação 340-4 , o decodif .icador decodifica o indicador de grupo de coeficiente significativo para o grupo atual a partir do fluxo de bits. A decodificação inclui determinar o contexto e então decodificar de acordo com o contexto determinado. A decodif.icação pode ser baseada em codificação aritmética binária (BAC), ou outros processos de codificação/decodificação binarizados.
Na operação 304-5, o decodificador determina se esse é o próximo ao último grupo na ordem de varredura. Em caso negativo, então a desedificação não terminou ainda, assim o decodificador cicia de volta para a operação 340-2 para avançar para o próximo grupo na ordem de varredura. Se for o próximo ao último grupo na ordem de varredura, então c decodificador move para a operação 304-7 onde o o e c o d i 1 i c a ca o r .a ί u s t a o indicador d e gr u p o d e coeficiente siqniticanvo para o último grupo, isto é, grupo [0, 0] em isso se baseia no caso especial no qual aquele grupo especifico é sempre presumido pelo codificador e decodi ficador como tendo pelo menos um coeiiciente não 7 P g Q Q -1 rn •'•o 1 -i r— m v- Wn o v~ 1 - tr' - ^ '-i fn f* ~ fCi ··· *" Ci — -^ / w* ^ I -- wuuo — ac Çj ja ^_λ — •-aC-x. X o r C ; i C. >.—· significativo é sempre pré-a justado em 1 de modo que os indicadores de coeficiente significativo para aquele grupo são sempre codificados e decodificados. Após essa operação, o decodificador vai para a operação 306 ou 308 (figura 7).
Será reconhecido que o processo de exemplo acima ilustrado nas figuras 7 e 8 a decodi f icação do mapa de significância LI (os indicadores de grupo de coeficiente significativo) e a decodificação do mapa de significância L0 (os indicadores de coeficiente significante) como um processo de dois estágios no qual o mapa de significância Ll é totalmente decodificado e o mapa de significância L0 é então decodificado. Em algumas modalidades esse pode ser o caso; entretanto, em algumas outras modalidades, os processos de decodificação podem ser parcialmente inter-torcido. 'Isto é, a decodif icação do mapa L0 pode iniciar antes do mapa T,1 ser totalmente decodi ficado . Será reconhecido que em algumas modalidades a decodificação do mapa de significância Lü pode começar assim que o primeiro indicador de grupo de coeficiente significativo foi recons t.ruído .
Em algumas modalidades, a codificação de mapa de significância de multi-níveis pode ser ligada e desligada dependendo,por exemplo, do tipo de imagem. Por exemplo, a codificação de mapa de significância de mult i-níveis pode ser habí iirada para imagens 1 e P, porém desabilitada para imagens H.
Ordem cie varredura de multi-níveis Como delineado acima, quando grupos de c o e f j o i e n r. e s ã o f o r m a d o s com o i I u s t. r a d o n os e x e mp 1 o s acima, isto é, em blocos contíguos, a ordem, de varredura (vertical, horizontal ou diagonal) resultará em cruzar os limites dos grupos ao varrer os indicadores de coeficiente significativo. Isso podería criar dificuldades em codificar e decodificar a partir de uma perspectiva de implementação de hardware porque armazenagem significativa de dados pode ser necessária para manter rastro de indicadores de coeficiente significativo de grupos parcialmente decodificados para implementar uma varredura de uma passagem. De outro modo, pode ser necessário varrer duas vezes (ou mais) : uma passagem de ordem de varredura para indicadores do mapa LI e uma passagem de ordem de varredura para o mapa LO . Uma opção para implementar um processo de varredura de uma passagem e evitar um pouco das questão de complexidade computacional e memória é utilizar uma ordem de varredura de multi-níveis ou baseada em grupo.
Com referência agora à figura 14, uma unidade de transformada 16x16 de exemplo 600 é ilustrada. No contexto de codificação de mapa significativo, a unidade de transformada 16x16 de exemplo 600 inclui 16 grupos de coeficiente, onde cada grupo de coeficiente é um bloco 4x4 de indicadores de coeficiente significativo. Uma ordem de varredura diagonal é ilustrada na figura 14. A ordem de varredura começa com o indicador de coeficiente significativo em [15, 15] e a varredura diagonal é da direita superior para esquerda inferior enquanto atravessa a unidade de transformada 600 a partir da direita inferior [15, 15; para a esquerda superior f 0, 0] . Como di scut ido acima, o processo de codificação de mapa de significância ’ v - . 0 -"O rs ^ d 0 ^ CÍ^ ’ 7 p r p Η 'j rn 0 0 m 0 /--« rs ^ d O 00 ’-Ι _L ^ ΓΊ O oocireidl-lc 5-i.Cjíiii J.cáíil6 .
Será observado que a ordem de varredura corta através dos limites de grupo de coeficiente. Por exemplo, considere os indicadores de coeficiente significativo em [10, 12], [11, 11] e [12, 10] como indicado pelos numerais de referência 610, 612 e 614, respectivamente. Na ordem de varredura, o codificador e decodificador primeiramente encontram o indicador de coeficiente significativo 614 na posição [12, 10]. A ordem de varredura então encontra o indicador de coeficiente significativo 612 na posição [11, 11] que é o primei.ro indicador de coeficiente significativo naquele grupo de; coeficiente. Então, a ordem de varredura então cruza em outro grupo de coeficiente quando atinge indicador de coeficiente significativo 610 na posição [10, 12] .
No lado de codificador, será reconhecido que esse cruzamento freqüente de limites de grupo de coeficiente pode resultar em armazenagem significativa durante o processo de varredura para rastrear os valores de indicadores de coeficiente significativo em vários grupos de coeficiente, e que uma determinação com relação ao indicador de grupo de coeficiente significativo para aquele grupo de coeficiente pode necessitar esperar até que o último indicador de coeficiente significativo (esquerda superior) no grupo tenha atinqi.do a ordem de varredura. Para processar a unidade de transformada inteira 600 em uma varredura de uma passagem, o codificador pode exigir alguma armazenagem complexa para evitar operações de acesso de memória excessivas. O cruzamento freqüente dos limites de grupe de coef)ciente apresenta uma complicação especifica C* Cg * · -*- CÃ ç," dd c. iLi j. Z- CÍ v-4 Cd v-1 tt Ca ~L· ü ü ty Ci v / (ti v CÁ /‘C ci i—S V / ] ξ isto é, quantização de decisão soft; (SDQ) . 0 rastreamento dos custos de taxa associados à codificação ao fazer determinações RDOQ/SDQ se torna significativamente mais complexo. No lado de decodificador, o decodificador também pode exigir armazenagem para rastrear os indicadores de grupo de coeficiente significativo anteriormente decodificados para os vários grupos à medida que o decodificador atravessa os mesmos em ordem de varredura reconstruindo os indicadores de coeficiente significativo. Isso resulta em maiores exigências de memória/armazenagem no decodificador.
Por conseguinte, em uma modalidade os processos de codificação e decodificação podem empregar uma ordem de varredura de muiti-niveis. Faz-se referência agora à figura 15, que mostra a unidade de transformada 600 da figura 14 com uma ordem de varredura diagonal de multi-níveis ilustrada. Em cada grupo de coeficiente, uma ordem de varredura diagonal é aplicada no nível de grupo em vez de através da unidade de transformada inteira 600. Os próprios grupos de coeficiente são processados em uma ordem de varredura, que nessa implementação de exemplo é também uma ordem de varredura diagonal.
Será reconhecido que diagonal é uma opção, e em o u r. r a s m o da 1 idades horizontal, vertical, z iguezague ou curtas oraens ae varredura podem ser aplicadas, nos grupos de coeficiente e/ou no nível de grupo para ordenar o processamento dos grupos de coeficiente.
Utilizando a ordem de varredura de multi-niveis ou baseados em grupo, cada grupo de indicadores dc c o p f -i pi p n t· p A 0 C d ' ^ ^ 0 Cí 'li f'· Cl 0 0 O vi ' í 1 CaClC 0 Π ordem. Isto é, a codificação/decodificação do próximo grupo de indicadores de coeficiente significativo somente começa após a codificação/decodificação do presente grupo ter sido concluído. Por exemplo, utilizando uma ordem, de varredura de grupo diagonal, o grupo inteiro de indicadores de coeficiente significativo que contém o indicador de coeficiente significativo 614 na posição [12, 10] é decodificado antes do decodificador iniciar a decodificação do grupo de indicadores de coeficiente significativo que contém o indicador de coeficiente significativo 610 na posição [10, 12]. Similarmente, esses dois grupos são totalmente decodificados antes do decodificador iniciar a decodificação do grupo contendo o indicador de coeficiente significativo 612 na posição [11, 11] . Isso permite que o codificador/decodificador processe mais facilmente mapa de siqni fi cância de multi-niveis em uma passagem uma vez que todos os indicadores de coeficiente significativo de um grupo de coeficiente são processados seqüencíalmente em ordem de varredura no grupo.
Vantajosamente, a ordem de varredura baseada em grupo ou multi-niveis facilita adicionalmente a intercalação de indicadores de grupo de coeficiente significativo no fluxo de bits. Como cada grupo de coeficiente é processado em orderr. de varredura, o c o a i f i e a dor pode q r avar o indi cador de q r upo d c coe f i. c í e n t e s i qni f i cative para o fluxo de bits e podo er.tãc inserir os indicadores de coeficiente significativo para aquele grupo de coeficrente se o indicador de grupo de coeficiente typ p> Π 3 Ο Ζ0ΙΓΟ. |\J O d 6 CO d ί f iCddcr f C CÍ0C0CÍÍ_ £ í CcICÍC2Γ ac cc di fica c indicâdcr d 0 grupo do c o 0 £ _ι~ c 10 n 10 significativo a partir do fluxo de bits e, se não zero, então decodifica os indicadores de coeficiente s: gn L f li ca:, ivo a partir do fluxo de bits e se não zero, então decodifica os indicadores de coeficiente significativo para aquele grupo em ordem de varredura no grupo. Se o indicador de grupo de coeficiente significativo for zero, então ajusta todos os indicadores de coeficiente significativo para aquele grupo em zero e lê decodifica o próximo indicador de coeficiente significativo a partir do fluxo de bits. Desse modo, reconstrói o mapa de s Lgrui f icância grupo por grupo em ordem de varredura de grupo.
Será entendido que a ordem de varredura utilizada no grupo não precisa necessariamente de corresponder à ordem de varredura de grupo utilizada para progresso do grupo para grupo. Por exemplo, nos grupos uma ordem de varredura diagonal pode ser utilizada enquanto o processamento dos grupos é feito em uma ordem de varredura de grupo horizontal.
Será também entendido que a ordem de varredura de multi-niveis descrita aqui casa com o agrupamento de coeficiente utilizado para o mapa de significância de multr-niveis; entretanto, no caso mais geral a ordem de varredura baseada em grupo ou muiti-níveis pode ser uiüaüizdUd em diocos que não correspondem necessariamente aos grupos de indicadores de coeficiente significativo. Por exempio, com referência às figuras 14 e 15, em vez de aplicar uma ordem de varredura diagonal em cada grupo de coeficiente 4x4, em outra implementação de exemplo o agrupamento ou bloco para a finalidade de ordem de varredura pode utilizar blocos 8x8. Em outras palavras, nesse exemplo, a ordem de varredura diagonal seria aplicada a quatro blocos 8x8. Observe que se houver descasamento entre o agrupamento utilizado para a ordem de varredura de multi-niveis e os grupos dei coeficiente utilizados no mapa de significância de multi-níveis, então o codificador/decodificador não processará necessariamente cada grupo totalmente antes de mover piara o grupo seguinte. É feita agora referência à figura 16, que mostra um método de exemplo 700 para decodificar um mapa de significância de multi-níveis utilizando uma ordem de varredura de multi-niveis. O método 700 é um processo de exemplo para reconstruir indicadores de coeficiente significativo a partir de um fluxo de bits de dados codificados. O fluxo de bits de dados codificados inclui indicadores de grupo de coeficiente significativo codificados. Cada indicador de grupo de coeficiente significativo corresponde a um grupo respectivo de indicadores de coeficiente significativo. Cada indicador de grupo de coeficiente significativo não zero no fluxo de bits é seguido pelos indicadores de coeficiente significativo de seu grupo respectivo em uma ordem de varredura. O método 700 começa com a decod.i i icação da uus:Cdü ae uitimo coeficiente significativo a partir do fluxo de bits na operação 7 0 2. Como mencionado anteriormente, a posição de último coeficiente significativo pode ser sinalizada em qualquer de diversos modos. Após a posição de último coeficiente significativo ser conhecida, então na operação 701 o decodificado! decodifica os indicadores de coeficiente significativo a partir do fluxo de bits para os coeficientes significativos no grupo de coeficiente contendo o último coeficiente significativo. A decodificação em operação 704 é realizada em uma ordem de varredura (que pode ser diagonal, vertical, horizontal, etc.) em um grupo de coeficiente, iniciando com a posição de coeficiente significativa após a posi.ção da última posição significativa e trabalhando de volta em direção ao coeficiente esquerdo superior na ordem de varredura.
Na operação 706, com referência a uma ordem de varredura de grupo, o grupo de coeficiente atual (indexado como CG) é ajustado para ser o grupo após o grupo contendo o último coeficiente significativo. A ordem de varredura de grupo é a ordem na qual os grupos de coeficiente são decodificados, iniciando com o grupo após o grupo contendo o último coeficiente significativo e trabalhando de volta em direção ao grupo esquerdo superior na unidade de transformada (o grupo contendo o coeficiente DC na posição [0, 0]) na ordem de varredura de grupo. A ordem de varredura de grupo pode ser vertical, horizontal, diagonal, etc .
Na operação 708, o decodif icador rec.onstrói o i r. d í c a d o r d e g r u p o d o c o e f i c i er.te s i q n ífic a t i vo para c grupo de coeficiente atual (indexado como CG) . Essa reconstrução inclui decodlíicar o indicador de grupo de coeficiente significativo a partir do fluxo de bits, a menos que um caso especial se aplique. Por exemplo, um caso esppftil exeroplar é quando os indicadores dc grupe de C C 0 11 C 1 G Γ. t 6 3 0- Cf Π 3. í _u C 3. tl 0. V G pciiTcí O üpO 3. Qi i G Ϊ Ld 0 CJ Cj i. Li p O abaixo do grupo de coeficiente atual são ambos não zero.
Nessa situação, o indicador de grupo de coeficiente significativo pode ser presumido ser não zero por default.
Como indicado pela operação 710, se o indicador de grupo de coeficiente significativo reconstruído for zero, então na operação 712 os indicadores de coeficiente significativo do grupo de coeficiente correspondente são todos ajustados em zero. Se o indicador de grupo de coeficiente siqnificativo reconstruído for não zero, então na operação 714 os indicadores de coeficiente significativo do grupo de coeficiente correspondente são decodificados a partir do fluxo de bits na ordem de varredura naquele grupo.
Após todos os indicadores de coeficiente significativo do grupo de coeficiente atual serem reconstruídos em qualquer operação 712 ou 714, então na operação 716, o índice CG é diminuído para mover para o grupo de coeficiente seguinte na ordem de varredura de grupo. Se na operação 718, o próximo grupo de coeficiente na ordem de varredura de grupo for CG > 0, isto é, não é o grupo esquerdo superior contendo o coeficiente DC em [0, 0], então o processo retorna para a operação 708 para reconstruir totalmente o coeficiente significativo do próximo qrupo de coeficiente. Entretanto, se CG = 0, então o método 700 prossegue para a operação 720, onde os indicadores de coeficiente significativo do grupo de coeficiente esquerdo superior são decodificados a partir do f Luxo de bits. Esses indicadores de coeficiente significativo são sempre codificados no fluxo de bits nessa c.i.uci 1 i da de de cxenplc, de modo que c de codificador presume que o indicador de grupo de coeficiente significativo para esse grupo de coeficiente é efetivamente sempre não zero.
Modelagem de contexto Para melhorar a eficiência de codificação, o motor BAC (ou outro motor de decodificação/codificação de entropia) utiliza contextos. O presente pedido propõe utilizar quatro contextos novos para codificar os indicadores de grupo de coeficiente significativo. Dois contextos são para codificação/decodificação luma e dois são para codificação/decodificação croma. A determinação de qual dos dois contextos se aplica a um dado indicador de grupo de coeficiente significativo pode ocorrer como a seguir. Se o indicador de grupo de coeficiente significativo para o grupo adjacente à direita do grupo atual for zero, e o indicador de grupo de coeficiente significativo para o grupo adjacente abaixo do grupo atual for zero, então o contexto para codificar o indicador de grupo de coeficiente significativo do grupo atual é 0. De outro modo, o contexto é 1. Se os indicadores para aqueles dois grupos adjacentes não estiverem disponíveis então os indicadores não disponíveis são presumidos = 0 para fins de determinação de contexto.
Observe que se uma direção de ordem de varredura d:ferente í :omc de esquerda superior em direção à direita interior) __ tor utilizada, o modelo de contexto podo ser alterado para utilizar o indicador de grupo de coeficiente significativo para o grupo adjacente à esquerda do grupo atual e c indicador de grupo de coeficiente significativo pa ra grupo adjaoonte acima do grupo atual para determinar 0 processo de determinação de contexto também pode incluir casos especiais. For exemplo, o grupo esquerdo superior pode ser sempre atribuído contexto 1. Há outros modelos de contexto possíveis e métodos para determinar contexto que pode ser utilizado. Alguns exemplos são dados abaixo.
Para definir notação, deixe L [ i ] indicar o indicador de significâncía do grupo de coeficiente i no nível Γ. e deixe N indicar o número dos grupos de cooíiciente no nível L. em geral, para um dado L e grupo de coeficiente í, utilizamos uma função c(*) de i e todo L[j] disponível para determinar um contexto C_i para L[i] . o contexto é desse modo dado por: C_i = c(i, L[0 ] , L[1], ... L[N ~ 1]) Onde j! = i. observe que para utilizar L[j] para determinar um contexto para L[i], o próprio Lfj1 deve ser disponível. Portanto, a ordem de varredura selecionada deve assegurar que qualquer L[j] utilizado em c (*) foi determinado anteriormente.
Em uma modalidade similar ao modo de determinação de contexto acima descrito, o contexto pode ser determinado por : C i = c(i. LOfO|, L0[ 1 |.L0[ 1 5J) s um ί b j + L 0 [ j j } Or.de j = 0, Ί , . . . , Ne]! = i , bj = 1 se o grupo dc coeficiente j for o vizinho direito ou inferior do grupo de coeficiente i e bj = 0 de outro modo. Essa modalidade especifica tem 3 contextos (6, se 3 contextos distintos f q rpm ’ t~ i t 7 g H c ς pg Γ0 Q rh ΓΠ gjj \ - - y— C. t-i'- —' ^ - ·—J "Z r'' r^i f ~k \ y~v. .•—J —. /- } —Z V*\ Ο V~ · w lí v_l a iiiuUa u. m uaac cu.t; ^ ^ y lí ^ d. cí ^ w _ . C i = c(i, L[01, L[ 1 | L[N- 1J) = sum {bj * L [ j] } Onde j =0, 1, Nej! = i, bj é não zero se o grupo de coeficiente j for qualquer grupo de coeficiente vizinho de i que já foi determinado e bj = 0 de outro modo. Nessa modalidade, os coeficientes de ponderação bj podem não necessariamente ser constantes.
Outra modalidade de c(*) ignora o indicador de grupo de coeficiente significativo de outros grupos de coeficiente em L e determina o contexto baseado exc.1 us ivamente na posição i do grupo de coeficiente atual. Isso pode ser expresso corno: C.i c( i. I [θ'. I ! 1 |.L[N- l|) = i Outros modelos de contexto e processos para determinar contexto podem ser utilizados com mapas de significância de multi-níveis.
Abaixo é dada uma sintaxe de exemplo para a modalidade de dois contextos discutida acima. Nesse exemplo, considere entradas como sendo a posição de varredura de grupo de coeficiente atual (xCG, yCG) e os depósitos anteriormente decodificados do elemento de sintaxe significant_coeffgroup_flag. A saída desse processo é ctxldxlnc. Nesse exemplo, a unidade de transformada é presumida ter sido dividida em dezesseis blocos contíguos para formar os grupos de coeficiente. Por exemplo, uma TU de 16x1 6 é dividida em blocos de 4x4 e uma TU de 12x32 é dividida em bioccs 8x8. Em outro exemplo, as unidades de L ra ris í c r ma da podem ser divididas err' b"! ocos 4x4 cu blocos de Ju l l'OS L ca. Áíi ci í i i i O 3 . A variável ctxldxlnc depende da posição atual (xCB, yCB), e depósitos anteriormente decodificados do elemento de sintaxe significant c.oeffgroup_ flag. Para a derivação de ctxdxlnc, o seguinte se aplica.
Se xCG for igual a 3, e yCG for igual a 3, ctxldxlnc é ajustado igual a um valor de contexto default. Nessa modalidade de exemplo, o valor default é ctxldxlnc = 44. Em outras modalidades, pode ser outro valor, incluindo 0 .
Se xCG for menor do que 3, e yCG for igual a 3, ctxldxlnc é ajustado como ctxldxlnc = 44 + significant_subblock_flag [ xCG + 1][ yCG] Se xCG for igual a 3, e yCG for menor do que 3, ctxldxlnc é ajustado como ctxldxlnc = 44 + siqnificant_subblock flag [ xCG] [ yCG +1] Se xSG for menor do que 3, e ySB for igual a 3, ctxldxlnc é ajustado como ctxldxlnc = 44 + Max{siçnificant_subblock_flag [ xCG+ 1] [ yCG], significant_subblock_flag [xCG][yCG -1]} 0 valor 44 nas expressões acima é um exemplo de um valor de índice default. Outros valores podem ser utilizados em outras modalidades, incluindo 0.
Quanti zação otimizada por distorção de taxa Alguns processos de codificação empregam quantização otimizada por distorção de taxa (RDOQ), ou que é as vezes mencionado como "quantização soft". RDOQ é um processo de determinar coeficientes de domínio de transformada quantizada ótimos corrí base em uma expressão de rr.i zaçao de distorção de taxa. Por conseguinte, os x, o o f i o ... o n t e s dc domínio dc transformada ctuantizada que resultam de RDOQ podem ou não ser iguais aos coeficientes de domínio de transformada quantizada nos quais se chegou através do processo de quantização e transformada normal. Em alguns casos, os valores de coeficiente podem ter sido modificados pelo processo RDOQ porque a distorção resultante foi determinada como tendo sido menos cara do que a economia conseqüente em custo de transmissão. 0 processo RDOQ avalia normalmente quatro custos em determinar o componente de taxa. Os quatro custos de taxa incluem a última taxa de 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 multi-níveis, pode ser vantajoso modificar RDOQ para incluir também a taxa de significância de nível mais elevado (por exemplo, taxa Ll) no cálculo RDOQ .
Em uma modalidade o processo RDOQ pode ser modificado para executar um RDOQ de dois estágios com relação a mapas dc significância. Primeiramente, o processo RDOQ é aplicado para determinar os melhores valores de coeficiente e última posição, e desse modo, os indicadores de coeficiente significativo Ll. Em um segundo estágio, com a última posição fixa, o processo RDOQ pode ser então d p * -JfiQd ΠΟ ναίΤιθΓ: l’ 6 CGÍTl Γ C i.âÇaC a. L ei X ei i_j 1 pri Γ ei CÍ Θ L 0 ΓΤΠ .1 Π ei Y. S0 há urna justificação de custo de distorção de taxa (RD) para zerar quais qu er coeficientes. A figura 9 mostra, em forma de fluxograma, um processo RDOQ de exemplo 400 para codificação de mapas de s i grti f i cârtc ia de mu i t i-n : ve i s . O processo 4 0 0 utiliza RDOQ r . ·. V , ♦ r~\ r- -- /— ·-' -v-. o -v—vvn —·. /-d —; ry i i ve +-1-7-1 ,-d -g ρα i a o L· v, ci o d uO-c j_lu-j-Ciícoo ca ci l. j. α*ιο*. v4.uiü--ic; ^^ai. ^ ^ ceifei ótimos e determinar a posição do último coeficiente significativo, isto é um L0 RDOQ. 0 processo 400 então fixa a última posição e ajusta o custo RD atual para considerar o efeito dos níveis adicionais de mapas de significância. Então, utiliza uma abordagem ávida piara otimizar a d i c r o n a 1 ir. e n t. e os coeficientes de t; r a n s f o rmada . A operação 402 reflete o uso de RDOQ para obter coeficientes de domínio de transformada quantizada ótimos, que provê uma piosição de último coeficiente significativo. A operação 402 resulta em certo custo RD com base nas taxas para transmitir a última posição, mapa de significância correspondendo aos coeficientes ótimos, os valores de coeficiente e CBP.
Na operação 404, a última posição significativa é fixa. Isto é, o último grupo conterá um coeficiente não zero, isto é, o indicador de grupo de último coeficiente significativo é fixo em 1. O codificador então determina avidamente se economia de custo é considerada por zerar coeficientes em outros grupos. O processo 400 pode ser executado na ordem de varredura em algumas modalidades, embora possa ser processado em outra ordem.
Na operação 406, iniciando com o próximo ao último grupo como o grupo atual, o codificador determina se o grupo atual tem um indicador de grupo de coeficiente significativo -- 1. Em caso negativo, então o grupo contem somente zeros já e o codificador salta para o grupo seguinte. Se o indicador de grupo de coeficiente significativo = 1, então o codificador calcula um custo RD que resultaria se todos os coeficientes no grupo atual t o a s e π i z eio a. N a r ρ eia ç a o 1 0 o , o codifictior avalia se o custo de RD recentemente calculado é melhor do que (por exemplo, menor do que) o custo de RD atual. Em caso positivo, então na operação 410 todos os coeficientes no grupo atual são zerados, e o custo de RD atual é atualizado para refletir a alteração. Na operação 412, o codificador avalia se é feito com o LI RDOQ, por exemplo, se atingiu o grupo pouco antes do grupo [0, 0] (o grupo [0, 01 não é zerado se o codificador e decodificador forem configurados para presumir que há pelo menos um coeficiente não zero naquele grupo, como descrito nos casos especiais delineados acima). Se houver grupos adicionais para avaliar, então o processo 400 continua na operação 414, onde o codificador move para o grupo seguinte (utilizando ordem de varredura em algumas modalidades). 0 processo RDOQ será ilustrado agora como exemplo. Referências serão novamente feitas ao exemplo dado acima com relação às figuras 3, 4 e 5. Antes de LI RDOQ, porém após L0 RDOQ, os coeficientes de domínio de transformada quantizada ótimos são mostrados na figura 3. O mapa de signíficância L0 correspondente é mostrado na figura 4, e o mapa de significância Li é mostrado na figura 5 . O processo LI RDOQ pode resultar, por exemplo, em um mapa de siqni f icância LC otimizado 500 mostrado na í nqura 10, e o rnapa de signif icância LI associado ou CG Γ Γ 0 S pC Γ. dC Γ. t G 2 0 2 ΓΡ. O S 0 ÍT 3 d Ο Π.3 f 1ÇU Γά 11 Será observado que os indicadores de coeficiente significativo no último grupo significativo, isto é, o Cf ^jpC 1 3 f 2 ' s 5.C Í_ r1 3 2_ ti ^ 2Γ 3 CÍ O ^ Fnf rg O - J Ο Ο Γ 3 r Q "] f q r· - -r- r Γ'. C ^ .... ^ y— . r -1 "? 1 it _ v—^ ^ v—, ^ ^ ^ r' r>^ ^ LJ _L £-/ [ tó ^ j / tf v_/ cj j_ LI Ο ^ -1- Λ —/ j α. u j. Üm —w u O v_ j_ Ci oi w w i . . w resultado, os indicadores de grupo de coeficiente significativo correspondentes para esses três grupos foram alterados para zeros também, como indicado na figura 11. C resultado é que o codificador não necessitará codificar esses três grupos. A distorção que resulta de zerar os poucos coeficientes que eram encontrados nesses grupos é superada pela economia de custo em reduzir o número de bits codificados, como determinado pela avaliação de RDOQ.
Em uma modalidade possível, o processo RDOQ pode ser estendido para determinar o tamanho de grupo de coeficiente ótimo para a TU atual. Nessa modalidade, o processo 400 é repetido para múltiplos rounds, com cada rodada assumindo um tamanho de grupo de coeficiente diferente e com a operação 410 modificada de modo que os coeficientes de transformada não são na realidade ajustados cm 0. Essencialmente, e cada rodada, esse processo de RDOQ modificado calcula o custo de RD para um tamanho de grupo de coeficiente específico. Após todos os rounds terem concluído, o RDOQ seleciona o tamanho de grupo de coeficiente que fornece o custo de RD mínimo e finalmente, ajusta quaisquer coeficientes de transformada em 0 como exigido. O codificador codifica o valor do tamanho de grupo de coeficiente ótimo no fluxo de bits de modo que possa ser cbtidc e urilizado pelo deccdificador.
Os tananhos de grupo de coefO ciente gue são testados ondeei ser- baseados no tamanho de unidade de transformada. Por exemplo, uma unidade de transformada 12x32 poae testar tamanhos de grupo 8x8, 4x4 e 2x2. Os n rupos a se mm testados podem ser selecionáveis, e o ^ o d ^ 4 n-· gr 0 Q o- j0 O CÍ 0 "Í T0 0 ^ 0^ tt v f ρ O ÍT 0X0 Tu.p ^ ^ 0 f-' íq Vg 0 o 0 Ί Vo ps 00 sequência) quais tamanhos de grupo serão testes para cada tamanho de unidade de transformada. Suponha, por exemplo, que o codificador e decodificador tenham concordado que piara TUs 16x16, o RDOQ modificado testará dois tamanhos de grupo de coeficiente diferentes: 2x2 e 4x4 indicados por 1 e 0, respectivamente. Se o RDOQ modificado determinar que 2x2 é ótimo, o codificador codifica um Bin 1 no fluxo de bits antes dos indicadores de grupo de coeficiente significativo. 0 decodificador decodifica esse Bin antes dos indicadores de grupo de coeficiente significativo e sabe que o tamanho do grupo de coeficiente para a TU atual c 2x2 .
Em outra modalidade o processo RDOQ tira proveito da varredura de multi-níveis: Ll/LO RDOQ é executado em um modo de grupo por grupo seguido por determinar a última posição. Especificamente, um processo RDOQ exemplar pra uma TU 16x16, grupos de coeficiente 4x4, e uma varredura de multi-níveis sobre grupos de 4x3, é como a seguir.
Etapa 1: ajustar nCG = 15 (iniciar a partir do último grupo de coeficiente) .
Etapa 2 : fazer LO RDOQ para cada coeficiente no grupo de coeficiente na posição de grupo nCG seguindo a ordem de varredura no grupo como especificado pela varredura de multi-níveis. etapa ó: se o grupo de coeficiente resultante após a etapa 2 tiver coeficientes não zero, nCG é maior do que 0, e o vizinho direito ou o vizinho abaixo tem seu indicador de grupo de coeficiente significativo ajustado em. zero, fazer LI RDOQ para o grupo de coeficiente: 1) pi 1 r~> λ i 1 ν' r*1 ^ Q Ή hh .H pi PlO ^ CÍ óh T 1 0 m 7 0 p o para o presente grupo de coeficiente; 2) se o custo for menor do que o custo RD resultando da etapa 2, ajustar todos os coeficientes no grupo de coeficiente em. zero, e o indicador de grupo de coeficiente significativo do grupo presente em 0.
Etapa 4: diminuir nCG em 1.
Etapa 5: repetir as etapas 1-4 até que nCG seja igual a 0.
Etapa 6: determinar a última posição minimizando o custo RD. A figura 17 ilustra esse exemplo em forma de fluxograma mostrando o processo de exemplo 450 para codificação RDOQ de um mapa de signif icância de multi-niveis com uma ordem de varredura de multi-níveis. 0 processo 450 inclui uma primeira operação 452 de ajustar o número de grupos de coeficiente nCG com base no grupo contendo o último coeficiente significativo. Na operação 454 , um processo LO RDOQ é realizado nos coeficientes no grupo de coeficiente atual; isto é, otimização de distorção de taxa é utilizada para determinar valores de coeficiente ótimo para cada coeficiente no grupo atual. Na operação 456, se não houver coeficientes não zero, então o processo 450 pula para a operação 464 para mover para o próximo grupo de coeficiente na ordem de varredura e cicia de volta para a operação 414 para executar LO RDOQ naquele próximo grupo de coeficiente. Observe que o processo 450 também pula para a operação 464 se os grupos de vizinho inferior e direito tiverem indicadores de coeficiente significativo np cg r·' ta T1 W rq cg O q/g 7 0 r p _ \T p v q Ç5 O C cg ζ0 V' ν'. ‘ ’ ^ τ ro v~ <-> r-\ n ' s-* - ru >p +~ Q o pi r~\ çz ,-n y" no grupo atual, então o processo 450 move para a operação 458 na qual LI RDOQ é realizado com relação ao grupo atual. Isto é, o custo RD é calculado se o indicador LI (indicador de grupo de coeficiente significativo) fosse ajustado em zero, desse modo resultando em todos os coeficientes de zero no decodif icador. Se a economia de taxa versus o a distorção resultar em um custo RD inferior, como avaliado na cperação 460, então na operação 462 os coeficientes são zerados e o indicador de grupo de coeficiente significativo é ajustado em zero.
Sintaxe de exemplo Uma sintaxe de exemplo para implementar mapas de significância de multi-niveis é fornecido abaixo. Essa sintaxe de exemplo é apenas uma implementação possível.
Os indicadores de grupo de coeficiente significativo podem ser indicados e definidos como: significant_coeffgroup_flag[ xCG ][ yCG ] esse indicador especifica, para a posição de grupo de coeficiente (xCG, yCG) no bloco de transformada 16x16 ou 32x32 atual, se o grupo de coeficiente correspondente no local (xCG, yCG) tem coeficientes não zero como a seguir: se significant_coeffgroup_flag [xCG][yCG] for i qua'» a 0, o r: úmero de coef 1 c i entes não zero no grupo de coeficiente no local (xCG, yCG) é ajustado igual a 0; de outro modo ( significant_coeffgroup_f1ag íxCG][yCG] é igual a 1), o número de coeficientes não zero no grupo de coeficiente no local (xCG, yCG) é não zero exceto para os casos especiais definidos abaixo.
oã 3 vJdSOS cSpcCa-cirS SaG Qcf 1ΠΙ GCS CCTTrC ca 3 C p U1 Γ I 1. O significant_coeifgroup flag[0] [0] na primeira posição de grupe de coeficiente (0, 0) em. ordem de varredura é inferido como sendo igual a 1. 2. 0 significant_coeffgroup_flag [xCG][yCG] na posição de grupo de coeficiente (xCG, yCG) na ordem de varredura é inferido como sendo igual a 1 se Significant_coeffgroup flag[xCG][uCG+1] = 1 e Significant_coeffgroup) flag[xCG+1] [yCG] = 1. Quando significant_coeffgroup_flag [xCG][yCG] não está presente, é inferido como sendo igual a 0 .
Em algumas modalidades, o signiiicant coeffgroup flagfxCG][yCG] não se aplica em blocos de transformada 4x4 e 8x8. O seguinte pseudo-código ilustra uma implementação de exemplo de mapas de significância de multi-niveis no processo do decodifreação para coeficientes de domínio de transformada quantizada de reconstrução (residuais) .
Será observado que a primeira porção do pseudo-código inclui decodificar a posição de último coeficiente siqr. i i cativo . O número de grupos de;· coeficiente c então cieeerninado, se a unidade de transformada é 16x16 ou maior (como indicado por se (iog2TrafoSize >) ) , e o número de coeficientes em cada grupo coeficiente. A segunda declaração se-ou reflete a decodificação dos indicadores de coeficiente significativo no grupo de coeficiente contendo C di-i-t-líTiG COef ΐϋΙΘΠΐβ Sj-Qri-LÍJ-CâtlGVG. residual coding cabac( xO, yO, log2TrafoSize, Deseritor trafoDepth, scanldx, cldx ) { last_significant_coeff_x ae(v) last significant_coeff_y ae(v) numCoeff - 0 xC = ScanOrderf log2TrafoSize 2 ][ log2TrafoSize - 2 ][ scanldx ][ numCoeff ][ 0 ] yC - ScanOrderf log2TrafoSíze 2 ][ log2TrafoSize - 2 Jl scanldx ][ numCoeff ][ 1 ] while( ( xC ! = last significant coeff x ) | ( yC != last_significant_coeff_y ) ) { numCoeíT++ xC ~ ScanOrder[ log2TrafoSize - 2 ][ log2TrafoSize - 2 ][ scanldx ][ numCoeff ][ 0 ] yC ~ ScanOrderf log2TrafoSize - 2 ][ log2TrafoSize - 2 ][ scanldx ][ numCoeff ][ 1 ] } if (log2TrafoSize > 3) { log2Coefí'GroupSize = log2trafoSize-2 numCoeffmCG = (1 « (log2CoeffGroupSize « 1)) numCoeffGroup : ((numCoeff + numCoeffinCG -1)» (log2CoeffGroupSize « 1)) for( m =' numCoeff - (numCoeffGroup-1 )* numCoeffinCG-1; m >= 0; m—) { n - (numCoeffGroup-1 )*numCoeffinCG + m xC - ScanOrderf log2TrafoSíze - 2 ]| log2TrafoSize - 2 ][ scanldx ][ n ]| 0 ] yC " ScanOrderj log2TrafoSize - 2 ]f log2TrafoSize - 2 ][ scanldx ][ n ]| 1 ) if (n - = numCoeff-1) significam, coeff fiag[ xC ][ yC J 1 1 Else significant_coeff flag[ xC || yC j ae<v) } for( nCG = numCoeffGroup-2; nCG >= 0; nCG— ) { xCG = ScanOrder[ 0 ][ 0 ][ scanldx ]| nCG ][ 0] yCG = ScanOrdcr| 0 ]f ü ][ scanldx j| nCG ][ 1 ] rightCGFlag = (xCG == 4)? 0: significant_coeffgroup jlag[ xCG+1 J[ yCG J bottomCGFlag = (yCG == 4)? 0: significant_coeffgroup_flag[ xCG ] [ yCG+1 J if ( ( rightCGFlag + bottomCGFlag == 2 ) || ( nCG == 0 ) ) í signiticant cocfígroup_flag[ xCG J[ yCG ] = 1 } cise { significant_coeffgroup_flag| xCG ][ yCG | ae(v) } if (significant_coeffgroup_flag[ xCG ][ yCG ] ) { numNonzeroCoef = 0 for( m = numCoeffGroup -1; m > 0; m~) { n = nCG*numCoeffinCG + m xC = ScanOrderf log2TrafoSize - 2 ][ log2TrafoSize - 2 ][ scanldx ][ n |[ 0 j yC Scanürderf log2TrafoSize — 2 J[ log2TrafoSize - 2 ][ scanJdx ][ n ][ 1 | significant coeff flag[ xC j| yC | ae(v) numNonzeroCocf J signiflcant_cocff_f1ag[ xC ][ yÇ ] I m - 0 n = nCG*numCoeffinCG — m xC Scanürderf log2TrafoSize - 2 ][ log2TrafoSize - 2 ][ scanldx ][ n ][ 0 ] yC ScanOrder[ log2TrafoSize — 2 J[ log2TrafoSize - 2 ][ scanldx ][ η ][ I ] if ( ( rightCGFlag + bottomCGFlag == 2 ) j! ( nCG == 0 ) || numNonzeroCoeí) { significant coeff flag[ xC ][ yC ] ac(v) j else ! significant coeff flag[ xC ][ yC ] = 1 i ( } else { for( m = numCoeffGroup -1; m >= 0; m~) { n = nCG*numCoeffmCG + m xC ScanOrder[ log2TrafoSize 2 ][ log2TrafoSize - 2 ][ scanldx ][ n ][ 0 ] yC = Scanürderf log2TrafoSize 2 ][ log2TrafoSize.2 ][ scanldx ][ η ][ 1 J significant coeff flagf xC ][ yC ] = 0 } } i f } else { for( n = numCoeff- 1; n >= 0; n— ) { xC - Scanürderf log2 frafoSize - 2 ff log2TrafoSize - 2 ]f scanldx ][ n ][ 0 ] yC = Scanürderf log2TrafoSize - 2 jf log2TrafoSize - 2 ][ scanldx ][ n ]f 1 ] significant__coeff_flag( xC |[ yC ) ae(v) } } ....(decoding of coeffícient values and signs ornitted) } O segundo para loop na declaração se-ou principal reflete o processamento de grupo por grupo em ordem de varredura de grupo. Na primeira parte daquele loop, dois casos especiais são lidados em uma declaração se-ou: o indicador de grupo de coeficiente significativo é ajustado em 1 se o grupo de coeficiente for o grupo esquerdo superior {isto é, nCG = 0) ou se os grupos à direita e parte inferior do grupo atual tiverem indicadores de grupo de coeficiente significativo que são ambos não zero. Se esses dois casos não se aplicam (a oração "ou") , então o indicador de grupo de coeficiente significativo é decodificado a partir do fiuxo de bits (signi 'beant coeffqroup fiag (xCGj [yCG] .
Seguindo essa declaração se-ou, uma declaração se-ou adicional provê que se o indicador de grupo de coeficiente significativo é não zero, então os indicadores de coeficiente significativo para aquele grupo .são decodrficados a partir do fluxo de bits em ordem de varredura. Todos exceto o último (esquerda superior) indicador de coeficiente significativo no grupo são decodificados a parti do fluxo de bits. 0 decodificador então avalia se quaisquer dos indicadores de coeficiente significativo decodificados para aquele grupo são não zero. Km caso positivo, então decodifica o indicador de último coeficiente significativo (esquerdo superior) para aquele grupo; e de outro modo, ajusta o mesmo em 1 porque sabe que não pode ser zero. A declaração "ou" que segue se aplica à situação onde o indicador de grupo de coeficiente significativo é zero. Nesse caso, todos os indicadores de coeficiente significativo para esse grupo são ajustados em zero. 0 pseudo-código acima mostra uma implementação de exemplo do método de exemplo 700 descrito acima com relação a figura 16. Os indicadores de grupo de coeficiente significativo e seus indicadores de coeficiente significativo correspondentes (se houver) são intercalados nessa modalidade. Uma distinção entre o método de exemple 700 na figura 16 e o pseudocódigo de exemplo é que o método de exemplo 700 lida com o caso especial do grupo esquerdo superior na operação 720, ao passo que o pseudocódigo lida com aquele caso especial na operação?08 por ajustar o indicador do grupo cie coeficiente significativo para aquele grupo puro sgu não ζθγο θ d θ s s θ modo d g c o d i.. f i c 3 r os indicadores de coeficiente significativo daquele grupo a P a 1 *'· 1 r G ·· r a u x o d e b íts n a o p e r a ç ã o /1 4 Err‘ outra modalidade o tamanho de grupo de - - - v C- L:: ;~ie se r : . x o . a a ' n t- yy < yf.> c r j td I 1 iuao Jt -wef iciente 1x4 fixos c exposta r.c segui n to pseudocódigo: residual coding cabac( xO, yO, Iog2TrafoSize, Descritor trafoDepth, scanldx, cldx ) { last significant coeff x ae(v) last_significant_coeff_v ae(v) numCoeff = 0 xC - ScanOrderj log2TrafoSize - 2 Jf log2TrafoSize - 2 ][ scanldx ][ numCoeff 1[ 0 ] yC ScanOrder[ log2TrafoSize - 2 ]| log2TrafoSize - 2 J[ scanldx ][ numCoeff ]| I ] while( ( xC != last significant coeff_x ) || ( yC f last significant coeff_y ) ) { numCoeff t t xC ScanOrder[ log2TrafoSize - 2 ]f log2TrafoSize — 2 J[ scanldx ][ numCoeff ][ 0 | yC = ScanOrderf log2TrafoSize - 2 ][ log2TrafoSize -2 11 scanldx ]| numCoeff ][ 1 ] } if (log2TrafoSize > 3) { log2CoeffGroupSize = 2 numCoefíInCG = (1 « (log2CoeffGroupSize « 1)) numCoelTGroup = ((numCoeff + numCoeffinCG -1)» (log2CoeffGroupSize « 0) for( m = numCoeff - (numCoeffGroup-1 )* numCoeffinCG-1; m >= 0; m—) { n (numCoeffGroup-1 )* numCoeffinCG + m xC = ScanOrder[ log2TrafoSize - 2 ][ log2TrafoSize - 2 ][ scanldx ][ n ][ 0 | yC = ScanOrder[ log2TrafoSize - 2 ][ log2TrafoSize - 2 ][ scanldx ][ n ][ 1 J if (n == numCoeff-1) significant coeff_flag[ xC ][ yC ] = 1 El sc significant _coeffjflag[ xC ][ yC | ae(v) } for( nCG = numCoeffGroup-2; nCG 0; nCG— ) { xCG = ScanOrdefi log2trafoSize - log2CoeffGroupSize -2 j[ log2trafoSize - log2CoeffGroupSize -2 ][ scanldx ][ nCG ][ 0] yCG = ScanOrder[ log2trafoSize - log2CoeffGroupSize -2 || log2trafoSize - log2CoeffGroupSize - 2 ]| scanldx ][ nCG j[ 1J rightCGFIag (xCG ~= (!« (log2trafoSize - log2CoeffGroupSize) ) )? 0: significant coeffgroup flag[ xCG+l ][ yCG ] bottomCGFIag (yCG == (1 <<: (log2trafoSize - log2CoeffGroupSize) ) )? 0: signilicant coeffgroup fiag| xCG ] [ yCG+ 1 ] if ( ( rightCGFIag t- bottomCGFlag == 2 ) I! ( nCG 0 ) ) I ( significant coeffgroup flag[ xCG ][ yCG ] = 1 ί cise ! significant coeffgroup_flag| xCG || yCG | ae(v) í if (significam coeíTgroup ílag[ xCG j| yCG ) ) [ numNonzeroCoef = 0 for( m = numCoeffGroup -1; m > 0; m—) { n = nCG*numC-oeffinCG + m xC ~ ScanOrder[ log2TrafoSize -- 2 ][ log2TrafoSize - 2 ][ scanldx ]f n 1[ 0 ] yC Scanürderj log2TrafoSize - 2 ][ log2TrafoSize - 2 ][ scanldx ][ η ][ 1 | significant coeff flag| xC ]| yC ] ae(v) numNonzeroCoef * significantcoeftj flag[ xC j[ yC j t m 0 n nCG*numCoefflnCG m xC ScanOrder! log2TrafoSize 2 ][ log2Traf'oSize 2 ][ scanldx ][ n Jj 0 ] yC = ScanOrder) log2TrafoSize 2 ][ log2TrafoSize - 2 ][ scanldx ][ n ][ 1 ] if ( ( rightCGFlag + bottomCGFlag == 2 ) || ( nCG == 0 ) || numNonzeroCoef) { significa nt_coeff_flag| xC ]| yC ] ae(v) } else { significant coeff flag| xC ][ yC ] = 1 } } else { for( m ~ numCoeffGroup -1; m > - 0; m—) { n - nCG*numCoeffinCG + m xC ScanOrder! log2TrafoSize - 2 |[ log2TrafoSize - 2 ][ scanldx ]| n ][ 0 ] yC ScanOrder! log2TrafoSize 2 ][ log2TrafoSize 2 ][ scanldx ][ η |[ 1 ] significant coeff flag[ xC ][ yC ] - 0 } í } } else { for( n = numCoeff- 1; n >= 0; n.) { xC = ScanOrder! Iog2TrafoSize - 2 ][ log2TrafoSize - 2 jf scanldx ][ n ][ 0 ] yC = ScanOrder! log2TrafoSize - 2 ][ log2TrafoSize - 2 ][ scanldx ][ η ][ 1 ] signÍficant_coeff_flag| xC |( yC | ae(v) ! } ___(deeoding of coefficient values and signs omitted) } Ainda em outra modalidade, os indicadores de grupo de coeficiente significativo não podem ser rntercalados com os indicadores de coeficiente significativo no fluxo de bits. Isto é, os indicadores de grupo de coeficiente significativo são codificados no fluxo de bits juntos e os indicadores de coeficiente significativo, grupo a grupo na ordem de varredura, seguem os mesmos no f luxo de bits. A sintaxe de exemplo correspondendo a uma modalidade não intercalada é exposta ηo segui nto pseudocódigo: residual coding cabac( xO, yO, log2TrafoSize, Descritor trafoDepth, scanldx, cldx ) { last significant coeff x ae(v) last_significant_coelT_y ae(v) numCoeff = 0 xC ScanOrderj log2TrafoSize 2 |[ log2TrafoSize 2 ][ scanldx ]j numCoeff][ 0 ] yC -- ScanOrder| log2TrafoSize 2 |[ log2TrafoSize ·- 2 J[ scanldx ][ numCoeff j[ 1 ] while( ( xC ! last significam _coeff_x ) j ( yC ! - last significant coeff y ) ) { numCoeff t i xC ScanOrderj log2'I rafoSize 2 |[ log2TrafoSize -· 2 j[ scanldx ]j numCoeff ][ 0 ] yC ScanOrderj log2TrafoSize 2 |[ log2TrafoSize 2 j[ scanldx ][ numCoeff ][ 1 ] } if (log2TrafoSize > 3) { log2CoeffGroupSize = log2trafoSize-2 numCoefílnCG = (1 « (log2CoeffGroupSize « 1)) numCoeffGroup - ((numCoeff + numCoeffinCG -1)» (log2CoeffGroupSize « 1)) nCG = numCoeffGroup-1 xCG = ScanOrder[ 0 ][ 0 ][ scanldx ]f nCG ][ 0] yCG v ScanOrderj 0 ][ 0 ]( scanldx ][ nCG ][ 1] significant coeffgroup Πag[ xCG ][ yCG ] - 1 nCG = 0 xCG = ScanOrderj 0 ][ 0 ][ scanldx ][ nCG ][ 0] yCG = ScanOrderj 0 ]j 0 J[ scanldx ][ nCG ][ 11 significant coeffgroup flag[ xCG |[ yCG j = 1 for( nCG numCoeffGroup-2; nCG > 0; nCG— ) { xCG = ScanOrderj 0 j[ 0 ][ scanldx ][ nCG ][ 0] yCG = ScanOrder| 0 |[ 0 j[ scanldx ][ nCG ][ 11 rightCGFlag ^ (xCG == 4)? 0: significant coeffgroup_flag[ xCG+1 ]| yCG | bottomCGFIag ; (yCG 4)? 0: significant coeffgroup flag[ xCG ] [ yCG+1 ] if (rightCGFlag + bottomCGFlag == 2 ) { significant coeffgroup flag[ xCG ][ yCG ] = 1 } else { significant_coeffgroup_nag[ xCG |[ yCG j ae(v) \ i X ) nCG = numCoeffGroup-1 for( m = numCoeff- nCG*numCoeffinCG-l; m >= 0; m--) { n = nCG*numCoefftnCG -+ m xC ^ ScanOrderj log2TrafoSize - 2 ][ log2TrafoSize - 2 ][ scanldx ][ n ][ 0 ] yC -= ScanOrderj log2TrafoSize 2 ][ log2TrafoSize - 2 ][ scanldx ][ n j[ 1 ] if (n — numCoeff- 1) significant coeff flagj xC ][ yC j 1 Else signifícant_coeff_flag[ xC J[ yC J ae(v) } for( nCG = numCoeffGroup-2; nCG >= 0; nCG-- ) { if (significant_coeffgroup_nag[ xCG ][ yCG ] ) { numNonzeroCoef = 0 for( m ~ numCoeftGroup -1; m > 0: m~) { n nCG*numCoeffinCG + m xC ScanOrder| k>g2 I rafoSize 2 jj iog2 1 rafoSize - 2 )j scanldx jj n j[ o j yC ScanOrderj log2TrafbSize 2 j[ log2TrafoSize 2 ][ scanldx J[ η ][ 1 ] significant coeff flagj xC || yC | ae(v) numNonzeroCoef -*-= signiflcant coeff flagj xC ][ yC ] i i m = 0 n — nCG*numCoeffinCG -+ m xC - ScanOrderj log2TrafoSize 2 ][ log2TrafoSize - 2 ][ scanldx ]J n |[ 0 ] yC ScanOrder[ !og2T rafoSize 2 ]| log2TraíbSize 2 j[ scanldx ]| η )[ 1 | xCG = ScanOrderj 0 ][ 0 ]| scanldx j[ nCG | [ 01 yCG = ScanOrderj 0 Jj 0 ]j scanldx ]j nCG Jj lj rightCGFlag - (xCG == 4)? 0: signifícant_coeffgroup_flag[ xCG+1 ][ yCG ] bottomCGFlag = (yCG == 4)? 0: significant_coeffgroup______flagj xCG ] [ yCG+1 J if ( ( rightCGFlag · bottomCGFlag == 2 ) | ( nCG == 0 ) || numNonzeroCoef) { signijicant_coeff_nagf xC jj yC j ae(v) } elsc { signiflcant coeff flagj xC ][ yC ] :r 1 } } else { for( m = numCoeffGroup -1; m >= 0; m-) { n = nCG*numCoeffínCG + m xC ScanOrderj log2TrafoSize - 2 ][ log2TrafoSize - 2 ][ scanldx ][ n ][ 0 J
yC = ScanOrderj log2TrafoSize - 2 ][ log2TrafoSize - 2 ][ scanldx ]j n jj 1 J signiflcant coeff flagj xC ][ yC ] - 0 } } } } else I i for( n ~ numCocff I; n >' 0; n - ) { xC ScanOrderj Iog2TrafoSize. 2 ][ log2TrafoSíze - 2 ][ scanldx ]| n ]| 0 j yC ScanOrderj log2TrafoSize 2 ][ log2TrafoSize - 2 jj scanldx jj n )[ 1 ] significant_coeff_flag| xC ]| yC ] ae(v) } } ...(dccoding of coefficient values and signs omitted) I É feita agora referência à figura 12, que mostra um diagrama de blocos simplificado de uma modalidade de exemplo 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 de computador ou aplicação armazenada na memória 904 e contende instruções para configurar o processador 902 para executar operações 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 mapa de significância de multi-r.ívei s descritos aqui . Será entendido crue a apl i cação de CodiiiCaÇaG 906 pOCle ScI άΓΓΓιαΖΘΓίαάΐ GITi UIu ÍTiGlO legível pCT computador, como um compact disc, dispositivo de memória flash, memória de acesso aleatório, unidade rigida, etc.
Faz-se referência agora também à figura 13, que mostra um diagrama de blocos simplificado de uma modalidade ce exemplo de um decodificador 1000. O decodificador 1000 inclui um processador 1002, uma memória 1004, e uma aplicação de decodificação 1006. A aplicação de decodifreação 1006 pode incluir um programa de computador ou aplicação armazenada na memória 1004 e contendo instruções para configurar o processador 1002 para executar operações como aqueles descritos aqui. A aplicação de decodificação 1006 pode incluir um decodificador de entropia configurado para reconstruir residuais com base em mapas de significância de multi-niveis, como descrito aqui. Será entendido que a aplicação de decodificação 1006 pode ser armazenada em urn meio legível por computador, como um compact disc, dispositivo de memória flash, memória de acesso aleatório, unidade rígida, etc.
Será reconhecido que o decodificador e/ou codificador de acordo com o presente pedido podem ser implementados em diversos dispositivos de computação, incluindo, sem limitação, servidores, computadores de propósito geral apropriadamente programados, dispositivos de reoroauçào e codificação de áudio/video, conversores de sinais de frequência de televisão, equi p a m ento d ¢2 b r o a d c a s t: de televisão, e dispositivos móveis. O decodificador ou codificador pode ser implementado por meio de instruções contendo software para configurar um processador para realizar as funções descritas aqui. As instruções de b ü i L W d I Θ jü QCÍ0Íí l 0 0 X ctXTriciZ0ficiQciS 0ITi ^udiQLicí íu0ÍTiG ΧΓ u_ ci iGQÒVGi por computador não transitória apropriada, incluindo CDs, RAM, ROM, memória flash, etc.
Será entendido que o codificador descrito aqui e o módulo, rotina, processo, thread ou outro componente de software implementando o método/processo descrito para configurar o codificado pode ser realizado utilizando técnicas de programação de computador e linguagens padrão. 0 presente pedido não é limitado a processadores específicos, linguagens de computador, convenções de programação de computador, estruturas de dados, outros tais detalhes de implementação. 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 chip integrado de aplicação específica (ASIC), etc.
Certas adaptações e modificações das modalidades descritas podem ser feitas. Portanto, as modalidades discutidas acima são consideradas como sendo ilustrativas e não restritivas.
REIVINDICAÇÕES

Claims (16)

1. Método de reconstruir indicadores de coeficiente significativo para uma unidade de transformada de um rluxo de bits de dados codificados, o fluxo de bits incluindo indicadores tíe grupo de coeficiente significativo c o dificados, em q u e c a d a ind icador de gru po d e coeficiente significativo corresponde a um grupo respectivo de indicadores de coeficiente significativo, o método sendo caracterizado pelo fato de que compreende: Para cada dos respectivos grupos de indicadores de coeficiente significativo, em uma ordem de varredura de grupo, reconstruir o indicador de grupo de coeficiente significativo correspondente daquele grupo, e Reconstruir os indicadores de coeficiente significativo naquele grupo por decodificar os indicadores de coeficiente significativo a partir do fluxo de bits, em uma ordem de varredura no grupo, se o indicador de grupo de coeficiente significativo correspondente for não zero, e Ajustar os indicadores de coeficiente significativo em zero, se o indicador de grupo de coeficiente significativo correspondente for zero.
2. Método, de acordo com a reivindicação 1, c arac t o r .i z a d o pelo fato de que a ordem de varredura de grupo é uma ordem prescrita na qual os grupos respectivos de indicadores de coeficiente significativo devem ser reconstruídos.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que os indicadores de coeficiente significativo de um seguinte des grupos respectivos são reconstruídos somente após todos os . r.d i c a d o r e s d e c o e f : c i c- n t e s ; q n i f: c a t i v o d e t o dos os çru p o s ar.Ler i ores na orderr. de varredura de qrupo serem reconstruídos.
4. Método, de acordo com a reivindicação 2 ou reivindicação 3, caracterizado pelo fato de que a ordem p çr r0CCnSt.ri''"''^C grnpn ^ ^ VQS Ç5 · J ΠΊ ç} w Γ_ v_101 í l d -L d Q O11 α j. .
5. Método, de acordo com qualquer uma das reivindicações 1, 2, 3 ou 4, caracterizado pelo fato de que a ordem de varredura é uma ordem prescrita na qual os indicadores de coeficiente significativo em cada dos grupos devem ser reconstruídos.
6. Método, de acordo com a reivindicação 5, caracter!zado pelo fato de que a ordem prescrita de indicadores de coeficiente significativo em cada dos grupos é uma ordem diagonal.
7. Método, de acordo com qualquer urna das reivindicações 1, 2, 3, 4, 5 ou 6, caracter!.zado pelo fato de que a reconstrução dos indicadores de grupo de coeficiente significativo inclui decodificar pelo menos alguns dos indicadores de grupo de coeficiente significativo a partir dos dados codificados do fluxo de b i. t s .
8. Método, de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5, 6 ou 7, caracterizado pelo fato de que os grupos respectivos de indicadores de coeficiente significativo excluem um grupo contendo um último coeficiente significativo e exclui uma posição contendo grupo [0, 0] .
9. Método, de acordo com qualquer uma das V- · \ / ··, r- '· » ; --- Γ3 .---- Μ-. ,·-.Ί c- " Λ ^ '7 ,. _ _ . - , ...... — - - - - > ' ’ / / - ' ° · , carac:er: zaac pe . ο ί <itc do que compreende ainda ajustar um indicador de grupo :-c ecuq .'.ciente sigr.ií : cativo err. 1 para um grupo contendo o indicador de coeficiente significativo para um último ccef;ciente significati vo.
10. Método, de acorde cem qualquer uma das l CiV 1 í]U.1 Idlõtíb j- , Z , -J r , O , O o U / , ^dlaCiGIIZcldC pC 1C fato de que compreende ainda ajustar um indicador de grupo de coeficiente significativo em 1 para um grupo contendo o indicador de coeficiente significativo para um coeficiente na posição [0, 0 ] .
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 os grupos são blocos quadrados contíguos.
12. 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 cada grupo é um bloco retangular não quadrado.
13. 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 indicadores de grupo de coeficiente significativo inclui determinar um contexto para aquele indicador de grupo de coeficiente significativo com base nos indicadores de grupo de coeficiente significativo reconstruídos para dois grupos vizinhos, e em que os dois grupos vizinhos incluem um vizinho direito e um vizinho embaixo, e em que o contexto é 0 se ambos os indicadores de coeficiente significativo para os cois grupos vizinhos forem 0, e em que de outro modo o contexto é 1.
14. Decodificador para decodificar um fluxo de bits de dados codificados para reconstruir indicadores de coeficiente siqnificativo para uma unidade de transformada, ca racterizado pelo fato de que compreende: ▼τ’ r', r p r' pi p q p ri x·· m · oíTlâ. ÍTiGiGC Σ G <3. / G Uma aplicação de decodificação armazenada na memória e contendo instruções para configurar o processador para executar o método de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ou 13.
15. Meio Legível por processador não transitório que armazena instruções executáveis por processador, ca racteri zado pelo fato de que, quando executadas, configuram um ou mais processadores para executar o método de acordo com qualquer uma das reivindicações 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ou 13.
16. Método para codificar indicadores de coeficiente significativo para uma unidade de transformada, caracterizado pelo fato de que compreende: L^ara cada grupo respectivo de indicadores de coeficiente significativo em uma ordem de varredura de grupo, Codificar o indicador de grupo de coeficiente significativo correspondente daquele grupo, a menos que um caso especial se aplique, e em que o indicador de grupo de coeficiente significativo é ajustado em zero para indicar que aquele grupo correspondente não contém indicadores de coeficiente significativo não zero, e Codificar os indicadores de coeficiente significativo naquele grupo em uma ordem de varredura no grupo, se o indicador de grupo de coeficiente significativo correspondente for não zero.
BR102012029413-3A 2011-11-19 2012-11-19 Método e decodificador para reconstruir indicadores de coeficiente significativo para uma unidade de transformada BR102012029413B1 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161561872P 2011-11-19 2011-11-19
US61/561,872 2011-11-19
US13/446,186 2012-04-13
US13/446,186 US9743098B2 (en) 2011-11-19 2012-04-13 Multi-level significance map scanning

Publications (3)

Publication Number Publication Date
BR102012029413A2 true BR102012029413A2 (pt) 2016-02-16
BR102012029413A8 BR102012029413A8 (pt) 2021-08-24
BR102012029413B1 BR102012029413B1 (pt) 2022-02-15

Family

ID=46245802

Family Applications (1)

Application Number Title Priority Date Filing Date
BR102012029413-3A BR102012029413B1 (pt) 2011-11-19 2012-11-19 Método e decodificador para reconstruir indicadores de coeficiente significativo para uma unidade de transformada

Country Status (11)

Country Link
US (3) US9743098B2 (pt)
EP (1) EP2595380B1 (pt)
JP (2) JP5542188B2 (pt)
KR (1) KR101538832B1 (pt)
CN (1) CN103124349B (pt)
AU (1) AU2012245178B2 (pt)
BR (1) BR102012029413B1 (pt)
CA (1) CA2773990C (pt)
HK (1) HK1179451A1 (pt)
SG (1) SG190516A1 (pt)
TW (1) TWI483618B (pt)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8964849B2 (en) * 2011-11-01 2015-02-24 Blackberry Limited Multi-level significance maps for encoding and decoding
EP2745512B1 (en) * 2012-01-03 2019-10-23 HFI Innovation Inc. Method and apparatus for block-based significance map and significance group flag context selection
US9621894B2 (en) 2012-01-13 2017-04-11 Qualcomm Incorporated Determining contexts for coding transform coefficient data in video coding
AU2012200319B2 (en) * 2012-01-19 2015-11-26 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the significance map for residual coefficients of a transform unit
US9106918B2 (en) * 2012-01-20 2015-08-11 Sony Corporation Coefficient coding harmonization in HEVC
US9350998B2 (en) 2012-06-29 2016-05-24 Qualcomm Incorporated Coding of significance flags
US9386306B2 (en) 2012-08-15 2016-07-05 Qualcomm Incorporated Enhancement layer scan order derivation for scalable video coding
JP6341426B2 (ja) 2012-09-10 2018-06-13 サン パテント トラスト 画像復号化方法および画像復号化装置
US9538175B2 (en) * 2012-09-26 2017-01-03 Qualcomm Incorporated Context derivation for context-adaptive, multi-level significance coding
KR101502144B1 (ko) * 2013-08-22 2015-03-12 주식회사 에스원 계수 정보를 변환하는 방법 및 장치
US9445132B2 (en) * 2013-09-09 2016-09-13 Qualcomm Incorporated Two level last significant coefficient (LSC) position coding
KR102218196B1 (ko) * 2013-10-28 2021-02-23 삼성전자주식회사 인코더, 이의 동작 방법과, 상기 인코더를 포함하는 장치들
US9781424B2 (en) * 2015-01-19 2017-10-03 Google Inc. Efficient context handling in arithmetic coding
JP6476900B2 (ja) 2015-01-21 2019-03-06 富士通株式会社 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム
US10334248B2 (en) 2015-05-29 2019-06-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
CN106303535B (zh) * 2015-06-08 2022-12-13 上海天荷电子信息有限公司 参考像素取自不同程度重构像素的图像压缩方法和装置
WO2016200234A1 (ko) * 2015-06-11 2016-12-15 엘지전자(주) 영상의 부호화/복호화 방법 및 이를 위한 장치
KR102644185B1 (ko) * 2015-09-30 2024-03-06 엘지전자 주식회사 비디오 코딩 시스템에서 레지듀얼 신호 코딩 방법 및 장치
EP3264763A1 (en) * 2016-06-29 2018-01-03 Thomson Licensing Method and apparatus for improved significance flag coding using simple local predictor
KR20180007680A (ko) * 2016-07-13 2018-01-23 한국전자통신연구원 영상 부호화/복호화 방법 및 장치
CN114760470A (zh) * 2017-04-13 2022-07-15 Lg 电子株式会社 图像编码/解码方法及其设备
US10523968B2 (en) 2017-09-18 2019-12-31 Google Llc Coding of last significant coefficient flags
EP3817385A4 (en) 2018-06-27 2022-07-27 ZTE Corporation PICTURE CODING METHOD AND APPARATUS, PICTURE DECODING METHOD AND APPARATUS, ELECTRONIC DEVICE AND SYSTEM
AU2018233042A1 (en) 2018-09-21 2020-04-09 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
AU2019201649A1 (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
CN114979641A (zh) * 2021-02-21 2022-08-30 腾讯科技(深圳)有限公司 视频编解码方法、装置、计算机可读介质及电子设备
CN115623218A (zh) * 2021-07-13 2023-01-17 财团法人工业技术研究院 特征数据编码方法、编码器、特征数据解码方法及解码器

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7190840B2 (en) * 2002-01-07 2007-03-13 Hewlett-Packard Development Company, L.P. Transform coefficient compression using multiple scans
KR100667808B1 (ko) * 2005-08-20 2007-01-11 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
US20070071331A1 (en) 2005-09-24 2007-03-29 Xiteng Liu Image compression by economical quaternary reaching method
KR100873636B1 (ko) * 2005-11-14 2008-12-12 삼성전자주식회사 단일 부호화 모드를 이용하는 영상 부호화/복호화 방법 및장치
KR101356733B1 (ko) * 2007-03-07 2014-02-05 삼성전자주식회사 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치
KR101375668B1 (ko) * 2008-03-17 2014-03-18 삼성전자주식회사 변환 계수의 부호화, 복호화 방법 및 장치
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
TWI482499B (zh) * 2008-10-03 2015-04-21 Ind Tech Res Inst 影像訊號處理裝置和方法
KR101457894B1 (ko) * 2009-10-28 2014-11-05 삼성전자주식회사 영상 부호화 방법 및 장치, 복호화 방법 및 장치
US8879632B2 (en) 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
US8942282B2 (en) * 2010-04-12 2015-01-27 Qualcomm Incorporated Variable length coding of coded block pattern (CBP) in video compression
CN113556554A (zh) * 2010-04-13 2021-10-26 Ge视频压缩有限责任公司 显著性图和变换系数块的编码
EP2559166B1 (en) * 2010-04-13 2017-11-01 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Probability interval partioning encoder and decoder
US9154801B2 (en) * 2010-09-30 2015-10-06 Texas Instruments Incorporated Method and apparatus for diagonal scan and simplified coding of transform coefficients
US8767824B2 (en) * 2011-07-11 2014-07-01 Sharp Kabushiki Kaisha Video decoder parallelization for tiles

Also Published As

Publication number Publication date
TW201334550A (zh) 2013-08-16
CN103124349A (zh) 2013-05-29
EP2595380B1 (en) 2015-10-21
BR102012029413B1 (pt) 2022-02-15
AU2012245178A1 (en) 2013-06-06
JP5542188B2 (ja) 2014-07-09
CA2773990C (en) 2015-06-30
HK1179451A1 (en) 2013-09-27
KR20130056183A (ko) 2013-05-29
CN103124349B (zh) 2016-09-14
US20180007376A1 (en) 2018-01-04
SG190516A1 (en) 2013-06-28
JP2014195269A (ja) 2014-10-09
EP2595380A1 (en) 2013-05-22
TWI483618B (zh) 2015-05-01
BR102012029413A8 (pt) 2021-08-24
AU2012245178B2 (en) 2013-11-28
KR101538832B1 (ko) 2015-07-22
US20190052890A1 (en) 2019-02-14
CA2773990A1 (en) 2013-05-19
JP2013110740A (ja) 2013-06-06
JP5925830B2 (ja) 2016-05-25
US10116950B2 (en) 2018-10-30
US20130128985A1 (en) 2013-05-23
US9743098B2 (en) 2017-08-22
US10681362B2 (en) 2020-06-09

Similar Documents

Publication Publication Date Title
BR102012029413A2 (pt) mapa de digitalização com significado multinível
KR101662411B1 (ko) 방향성 파티션들에 의한 인트라 예측 모드 코딩
JP5855759B2 (ja) 最後有効係数の位置のプログレッシブコーディング
RU2576590C2 (ru) Вывод позиции в порядке сканирования последнего значимого коэффициента преобразования при кодировании видеосигнала
JP6046164B2 (ja) ビデオコード化において変換係数データをコード化するためのコンテキストの決定
US9497472B2 (en) Parallel context calculation in video coding
ES2943552T3 (es) Procedimiento, aparato y sistema para codificar y descodificar el mapa de significatividad para los coeficientes residuales de una unidad de transformada
JP6223998B2 (ja) 高効率ビデオコーディングにおける符号化ブロックフラグ符号化の方法と装置
ES2750124T3 (es) Elementos sintácticos de señalización para coeficientes de transformada para subconjuntos de una unidad de codificación a nivel de hoja
BR102013001124A2 (pt) Ocultação de múltiplos bits de sinal dentro de uma unidade transformada
BR112021003315A2 (pt) redução de compartimento codificado regular para codificação de coeficiente com o uso de limite e parâmetro de rice
BR112013013650B1 (pt) Método, dispositivo e meio legível por computador para codificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo
BR112013013651B1 (pt) Métodos para codificar e decodificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo, aparelho para codificar coeficientes associados com um bloco de dados de vídeo durante um processo de codificação de vídeo e mídia legível por computador
BR112013032040B1 (pt) Método e aparelho para codificação de vídeo, e memória legível por computador
BR122020003135B1 (pt) Método e dispositivo para decodificar dados de vídeo e meio de armazenamento não transitório legível por computador
BR112016000584B1 (pt) Inicialização de parâmetro de rice para codificação de nível de coeficiente em processo de codificação de vídeo
WO2013109914A1 (en) Coding of coefficients in video coding
KR20150064116A (ko) 컨텍스트 적응 멀티-레벨 유의도 코딩을 위한 컨텍스트 도출
JPWO2011121843A1 (ja) 画像符号化及び画像復号化方法
ES2728529T3 (es) Mapas de significancia multinivel para codificación y decodificación
TWI789668B (zh) 脈絡適應性二進制算術寫碼用參數化體系決定技術
BR112021009714A2 (pt) redução de bin codificado regular para decodificação de coeficiente usando limite e parâmetro rice
TWI533705B (zh) 用於內容脈絡集選擇之方法及裝置

Legal Events

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

Owner name: BLACKBERRY LIMITED (CA)

B25G Requested change of headquarter 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]
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]
B03H Publication of an application: rectification [chapter 3.8 patent gazette]

Free format text: REFERENTE A RPI 2354 DE 16/02/2016,QUANTO AO ITEM (54).

B06A Patent application procedure suspended [chapter 6.1 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 19/11/2012, OBSERVADAS AS CONDICOES LEGAIS.