BR122020007580B1 - Decodificador, codificador e método para decodificação de um fluxo contínuo de dados - Google Patents

Decodificador, codificador e método para decodificação de um fluxo contínuo de dados Download PDF

Info

Publication number
BR122020007580B1
BR122020007580B1 BR122020007580-5A BR122020007580A BR122020007580B1 BR 122020007580 B1 BR122020007580 B1 BR 122020007580B1 BR 122020007580 A BR122020007580 A BR 122020007580A BR 122020007580 B1 BR122020007580 B1 BR 122020007580B1
Authority
BR
Brazil
Prior art keywords
transformation
coefficient
coefficients
transform
symbol
Prior art date
Application number
BR122020007580-5A
Other languages
English (en)
Inventor
Tung Nguyen
Heiner Kirchhoffer
Detlev Marpe
Original Assignee
Ge Video Compression, Llc
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 Ge Video Compression, Llc filed Critical Ge Video Compression, Llc
Publication of BR122020007580B1 publication Critical patent/BR122020007580B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • 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
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4068Parameterized codes
    • H03M7/4075Golomb codes
    • 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/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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

uma ideia aqui aplicada é usar a mesma função para a dependência do contexto e a dependência do parâmetro de símbolização sobre coeficientes de transformação previamente codificados/descodificados. a aplicação da mesma função ? com parâmetros de função variável - pode até ser usada relativamente a diferentes tamanhos de blocos de transformação e/ou porções de frequência dos blocos de transformação no caso de os coeficientes de transformação serem espacialmente dispostos em blocos de transformação. outra variante desta ideia é usar a mesma função para a dependência de um parâmetro de simbolização sobre coeficientes de transformação previamente codificados/descodificados para diferentes tamanhos do bloco de transformação do coeficiente de transformação de corrente, diferentes tipos de componentes de informação do bloco de transformação do coeficiente de transformação de corrente e/ou diferentes porções de frequência do coeficiente de transformação de corrente estão localizados dentro do bloco de transformação.

Description

[001] A presente invenção refere-se à codificação de coeficiente de transformação, como os coeficientes de transformação de um bloco de coeficientes de transformação de uma imagem.
[002] Em imagem baseada em bloco e/ou codecs de vídeo, uma imagem é codificada em unidades de blocos. Entre os mesmos, os codecs baseados em transformação sujeitam blocos da imagem a uma transformação para obter blocos de coeficientes de transformação. Por exemplo, a imagem pode ser preditivamente codificada com um residual de predição sendo transformado codificado em unidades de blocos e depois codificando os resultantes níveis de coeficiente de transformação dos coeficientes de transformação destes blocos de transformação que usam codificação entrópica.
[003] Para aumentar a eficiência da codificação entrópica, são utilizados contextos para estimar com precisão a probabilidade dos símbolos dos níveis de coeficiente de transformação a serem codificados. No entanto, nos últimos anos, aumentaram as exigências impostas aos codecs de imagem. Adicionalmente aos componentes de luminância e crominância, os codecs têm de, por vezes, transportar mapas de profundidade, valores de transparência, e assim por diante. Além disso, os tamanhos dos blocos de transformação são variáveis dentro de uma faixa cada vez mais. Devido a estas variedades, os codecs têm um número crescente de diferentes contextos com diferentes funções para determinar o contexto dos coeficientes de transformação já codificados.
[004] Uma possibilidade diferente para obter altas taxas de compressão a uma complexidade mais moderada, é ajustar um esquema de simbolização para as estatísticas de coeficientes, o mais preciso possível. No entanto, para concretizar esta adaptação próxima das estatísticas atuais, é obrigatório ter em conta vários fatores, necessitando para isso de uma enorme quantidade de diferentes esquemas de simbolização.
[005] Correspondentemente, existe a necessidade de manter a complexidade da codificação de coeficientes de transformação baixa, ao mesmo tempo que se mantém a possibilidade de obter uma alta eficiência de codificação.
[006] A presente invenção pretende providenciar um tal esquema de codificação de coeficientes de transformação.
[007] Este objetivo é conseguido pela matéria das reivindicações independentes anexas.
[008] De acordo com um aspeto da presente invenção, um aparelho para codificar uma série de coeficientes de transformação com níveis de coeficientes de transformação em um fluxo compreende um simbolizador configurado para mapear um coeficiente de transformação atual para um primeiro conjunto de um ou mais símbolos de acordo com um primeiro esquema de simbolização, com o nível de coeficiente de transformação do coeficiente de transformação atual dentro de um primeiro intervalo de nível, e se o nível de coeficiente de transformação do coeficiente de transformação atual estiver dentro de um segundo intervalo de nível, para uma combinação de um segundo conjunto de símbolos, para o qual um nível máximo do primeiro intervalo de nível é mapeado de acordo com o primeiro esquema de simbolização, e um terceiro conjunto de símbolos dependente de uma posição do nível de coeficiente de transformação do coeficiente de transformação atual dentro do segundo intervalo de nível, de acordo com um segundo esquema de simbolização que é parametrizável de acordo com um parâmetro de simbolização. Além disso, o aparelho compreende um codificador entrópico adaptativo de contexto configurado para, se o nível de coeficiente de transformação do coeficiente de transformação atual estiver dentro do primeiro intervalo de nível, codificar entropicamente o primeiro conjunto de um ou mais símbolos para um fluxo de dados, e, se o nível de coeficiente de transformação do coeficiente de transformação atual estiver dentro do segundo intervalo de nível, codificar entropicamente o segundo conjunto de um ou mais símbolos para o fluxo de dados, em que o codificador entrópico adaptativo de contexto está configurado para, na codificação entrópica de pelo menos um símbolo pré-determinado do segundo conjunto de um ou mais símbolos para o fluxo de dados, usar um contexto dependente, através de uma função parametrizável através de um parâmetro de função, com um parâmetro de função definido para uma primeira definição, do coeficiente de transformação previamente codificado. Além disso, o aparelho compreende um determinador de parâmetros de simbolização configurado para, se o nível de coeficiente de transformação do coeficiente de transformação atual estiver dentro do segundo intervalo de nível, determinar o parâmetro de simbolização para o mapeamento para o terceiro conjunto de símbolos dependente, através da função com o parâmetro de função definido para uma segunda definição, dos coeficientes de transformação previamente codificados. Um insersor configurado para, se o nível de coeficiente de transformação do coeficiente de transformação atual estiver dentro do segundo intervalo de nível, inserir o terceiro conjunto de símbolos para o fluxo de dados.
[009] De acordo com outro aspeto da presente invenção, um aparelho para codificar uma série de coeficientes de transformação de diferentes blocos de transformação, possuindo, cada um, um nível de coeficiente de transformação, em um fluxo de dados, compreende um simbolizador configurado para mapear um nível de coeficiente de transformação para um coeficiente de transformação atual de acordo com um esquema de simbolização que é parametrizável de acordo com um parâmetro de simbolização, em um conjunto de símbolos; um insersor configurado para inserir o conjunto de símbolos para o coeficiente de transformação atual no fluxo de dados; e um determinador de parâmetros de simbolização configurado para determinar o parâmetro de simbolização para o coeficiente de transformação atual dependente, através de uma função parametrizável através de um parâmetro de função, de coeficientes de transformação previamente processados, em que o insersor, o dessimbolizador e o determinador do parâmetro de simbolização estão configurados para processarem sequencialmente os coeficientes de transformação dos diferentes blocos de transformação, em que o parâmetro de função varia em função de um tamanho do bloco de transformação do coeficiente de transformação atual, um tipo de bloco de informação do bloco de transformação do coeficiente de transformação atual e/ou uma porção de frequência do coeficiente de transformação atual estão localizados dentro do bloco de transformação.
[010] Uma ideia da presente invenção é usar a mesma função para a dependência do contexto e a dependência do parâmetro de simbolização sobre coeficientes de transformação previamente codificados/descodificados. A aplicação da mesma função - com parâmetros de função variável - pode até ser usada relativamente a diferentes tamanhos de blocos de transformação e/ou porções de frequência dos blocos de transformação no caso de os coeficientes de transformação serem espacialmente dispostos em blocos de transformação. Outra variante desta ideia é usar a mesma função para a dependência de um parâmetro de simbolização sobre coeficientes de transformação previamente codificados/descodificados para diferentes tamanhos do bloco de transformação do coeficiente de transformação atual, diferentes tipos de componentes de informação do bloco de transformação do coeficiente de transformação atual e/ou diferentes porções de frequência do coeficiente de transformação atual estão localizados dentro do bloco de transformação.
[011] Os aspetos detalhados e vantajosos da presente invenção são objeto das reivindicações dependentes. Além disso, as versões privilegiadas da presente invenção são descritas abaixo relativamente às figuras, entre as quais:
[012] A Fig. 1 mostra um diagrama esquemático de um bloco de coeficiente de transformação que compreende coeficientes de transformação por codificar e ilustra a co-utilização de uma função parametrizável para a seleção do contexto e determinação do parâmetro de simbolização de acordo com uma versão da presente invenção;
[013] A Fig. 2 mostra um diagrama esquemático do conceito de simbolização para níveis de coeficientes de transformação, usando dois esquemas diferentes dentro de dois intervalos de nível;
[014] A Fig. 3 mostra um gráfico esquemático de duas curvas de probabilidade de aparência definidas sobre possíveis níveis de coeficientes de transformação para dois contextos diferentes;
[015] A Fig. 4 mostra um diagrama de bloco de um aparelho para codificar uma série de coeficientes de transformação de acordo com uma versão;
[016] As Fig. 5a e 5b mostram diagramas esquemáticos de uma estrutura para o resultante fluxo de dados de acordo com diferentes versões;
[017] A Fig. 6 mostra um diagrama de bloco de um codificador de imagem de acordo com uma versão;
[018] A Fig. 7 mostra um diagrama de bloco de um aparelho para descodificar uma série de coeficientes de transformação de acordo com uma versão;
[019] A Fig. 8 mostra um diagrama de bloco de um codificador de imagem de acordo com uma versão;
[020] A Fig. 9 mostra um diagrama esquemático de um bloco de coeficientes de transformação, de modo a ilustrar um scan e um template de acordo com uma versão.
[021] A Fig. 10 mostra um diagrama de bloco de um aparelho para descodificar uma série de coeficientes de transformação de acordo com outra versão;
[022] As Fig. 11a e 11b mostram diagramas esquemáticos de conceitos de simbolização para níveis de coeficientes de transformação que combinam dois ou três esquemas diferentes dentro de intervalos parciais de toda a faixa do intervalo;
[023] A Fig. 12 mostra um diagrama de bloco de um aparelho para codificar uma série de coeficientes de transformação de acordo com outra versão; e
[024] A Fig. 13 mostra um diagrama esquemático de um bloco de coeficientes de transformação, de modo a ilustrar, de acordo com outra versão, uma ordem de scan de entre os blocos de coeficientes de transformação que seguem uma ordem de sub-bloco definida de entre sub-blocos, nos quais o bloco de coeficientes de transformação está subdividido, para ilustrar outra versão para conceber a função parametrizável para a seleção de contexto e determinação do parâmetro de simbolização. Relativamente à descrição abaixo, note-se que são usados os mesmos números de referência nestas figuras parar elementos que aparecem em mais do que uma destas figuras. Correspondentemente, a descrição de um elemento desses relativamente a uma figura deve igualmente aplicar-se à descrição de outra figura onde este elemento aparece.
[025] Além disso, a descrição trazida abaixo assume preliminarmente que os coeficientes de transformação são codificados como sendo bidimensionalmente dispostos, de modo a formar um bloco de transformação, como um bloco de transformação de uma imagem. No entanto, a presente aplicação não se restringe à codificação de imagem e/ou de vídeo. Em vez disso, os coeficientes de transformação por codificar podiam, em alternativa, serem coeficientes de transformação de uma transformação de unidimensional, como é utilizado, por exemplo, na codificação de áudio ou idêntico.
[026] Para explicar os problemas que as versões descritas mais abaixo enfrentam, e o modo como as versões mais abaixo descritas superam esses problemas, faz-se referência preliminar às Figs. 1 até 3, que mostram um exemplo de coeficientes de transformação de um bloco de transformação e o seu modo geral para codificar entropicamente, que é depois melhorado pelas versões subsequentemente explicadas.
[027] A Fig. 1 mostra, a título de exemplo, um bloco 10 de coeficientes de transformação 12. Na presente versão, os coeficientes de transformação estão dispostos bi-dimensionalmente. Em particular, os mesmos são apresentados, a título de exemplo, como sendo dispostos de modo regular em colunas e filas, apesar de ser possível também outra disposição bidimensional. A transformação que leva aos coeficientes de transformação 12 ou bloco de transformação 10 pode ser um DCT ou outra transformação que decompõe um bloco de (transformação) de uma imagem, por exemplo, ou outro bloco de valores espacialmente dispostos em componentes de diferente frequência espacial. No presente exemplo da Fig. 1, os coeficientes de transformação 12 estão bi-dimensionalmente dispostos em colunas i e filas j, de modo a corresponder a pares de frequência (fx(i), fy(j)) de frequências fx(i), fy(j) medidas ao longo de diferentes direções espaciais x,y, como direções reciprocamente perpendiculares , onde fx/y(i) < fx/y(i + 1) e (i,j) é a posição do respetivo coeficiente no bloco de transformação 10.
[028] Frequentemente, os coeficientes de transformação 12 correspondentes a frequências mais baixas têm níveis de coeficientes de transformação mais altos comparativamente com coeficientes de transformação correspondentes a frequências mais altas. Correspondentemente, muitas vezes muitos dos coeficientes de transformação perto do componente de frequência mais alta do bloco de transformação 10 são quantizados para zero e podem não ter de ser codificados. Em vez disso, uma ordem de scan 14 pode ser definida de entre os coeficientes de transformação 12 que dispõem unidimensionalmente os coeficientes de transformação 12 bi-dimensionalmente dispostos (i,j), em uma sequência de coeficientes em uma ordem, isto é (i,j) ^ k, de modo a ser provável que os níveis de coeficientes de transformação tenham uma tendência de diminuir monotonicamente ao longo desta ordem, isto é, é provável que o nível de coeficiente do coeficiente k seja maior do que o nível de coeficiente do coeficiente k+1.
[029] Por exemplo, pode ser definido um ziguezague ou uma análise por varrimento de entre os coeficientes de transformação 12. De acordo com o scan, o bloco 10 pode ser analisado em diagonais a partir, por exemplo, do coeficiente de transformação do componente DC (coeficiente esquerdo superior) até ao coeficiente de transformação de frequência mais alta (coeficiente direito inferior) ou vice-versa. Em alternativa, pode ser utilizado um scan orientado por fila ou orientado por coluna dos coeficientes de transformação entre os coeficientes de transformação do componente extremo que acabou de ser mencionado.
[030] Tal como descrito mais abaixo, na codificação do bloco de transformação, a posição do último coeficiente de transformação que não zero L por ordem de scan 14 pode ser codificada primeiro para o fluxo de dados, depois com mera codificação dos coeficientes de transformação a partir do coeficiente de transformação DC ao longo do caminho de scan 14 até ao último coeficiente de transformação que não zero L - opcionalmente nessa direção ou na direção contrária.
[031] Os coeficientes de transformação 12 têm níveis de coeficiente de transformação que podem ser assinados ou não assinados. Por exemplo, os coeficientes de transformação 12 podem ter obtido, através da transformação acima mencionada, com subsequente quantização para um conjunto de possíveis valores de quantização, sendo cada um associado a um respetivo nível de coeficientes de transformação. A função de quantização utilizada para quantizar os coeficientes de transformação, isto é, mapear os coeficientes de transformação para os níveis de coeficientes de transformação, pode ser linear ou não linear. Por outras palavras, cada coeficiente de transformação 12 tem um nível de coeficientes de transformação fora de um intervalo de possíveis níveis. A Fig. 2, por exemplo, mostra um exemplo onde os níveis de coeficientes de transformação x são definidos dentro de uma faixa de níveis [0, 2N-1]. De acordo com uma versão alternativa, pode não haver um limite superior na faixa de intervalo. Além disso, a Fig. 2 ilustra apenas níveis positivos de coeficientes de transformação, apesar de os mesmos também poderem ser assinados. Relativamente aos sinais dos coeficientes de transformação 12 e sua codificação, note-se que existem diferentes possibilidades relativamente a todas as versões delineadas abaixo por ordem para codificar estes sinais, e todas estas possibilidades devem estar no âmbito destas versões. Relativamente à Fig. 2, isto significa que pode também não haver nenhum limite inferior da faixa de intervalo dos níveis coeficientes de transformação.
[032] De qualquer modo, para codificar os níveis de coeficientes de transformação dos coeficientes de transformação 12, são utilizados diferentes esquemas de simbolização para cobrir diferentes porções ou intervalos 16, 18 da faixa de intervalo 20. Para ser mais preciso, os níveis de coeficientes de transformação dentro de um primeiro intervalo de nível 16, exceto para os que são iguais a um nível máximo do primeiro intervalo de nível 16, podem simplesmente ser simbolizados para um conjunto de um ou mais símbolos de acordo com um primeiro esquema de simbolização. Porém, os níveis de coeficientes de transformação que ficam dentro do segundo intervalo de nível 18, são mapeados para uma combinação de conjuntos de símbolos do primeiro e do segundo esquema de simbolização. Como será verificado mais tarde, o terceiro e mais intervalos podem seguir o segundo intervalo correspondentemente.
[033] Como se pode ver na Fig. 2, o segundo intervalo de nível 18 fica acima do primeiro intervalo de nível 16, mas sobrepõe-se com o último ao nível máximo do primeiro intervalo de nível 16, que é o 2 no exemplo da Fig. 2. Para níveis de coeficientes de transformação dentro do segundo intervalo de nível 18, o respetivo nível está mapeado para uma combinação do primeiro conjunto de símbolos correspondente ao nível máximo do primeiro intervalo de nível de acordo com o primeiro esquema de simbolização, e um segundo conjunto de símbolos dependente de uma posição do nível de coeficientes de transformação dentro do segundo intervalo de nível 18 de acordo com o segundo esquema de simbolização.
[034] Por outras palavras, o primeiro esquema de simbolização 16 mapeia os níveis cobertos pelo primeiro intervalo de nível 16 para um conjunto de primeiras sequências de símbolos. Por favor, note que o comprimento das sequências de símbolo dentro do conjunto de sequências de símbolo do primeiro esquema de simbolização pode ser até meramente um símbolo binário, no caso de um alfabeta binário e no caso de o primeiro intervalo de nível 16 meramente cobrir dois níveis de coeficientes de transformação, como 0 e 1. De acordo com uma versão do presente pedido, o primeiro esquema de simbolização é uma binarização unária truncada de níveis no intervalo 16. No caso de um alfabeta binário, os símbolos podem ser chamados de bins.
[035] Como será descrito em mais detalhe abaixo, o segundo esquema de simbolização mapeia os níveis dentro do segundo intervalo de nível 18 para um conjunto de segundas sequências de símbolo de comprimento variável, em que o segundo esquema de simbolização é parametrizável de acordo com um parâmetro de simbolização. O segundo esquema de simbolização pode mapear os níveis dentro do intervalo 18, i.e. x - o nível máximo do primeiro intervalo, para um código Rice com um parâmetro Rice.
[036] Em particular, o segundo esquema de simbolização 18 pode ser configurado de modo a que o parâmetro de simbolização varie uma taxa, à qual o comprimento das sequências de símbolo do segundo esquema aumente desde o limite inferior do segundo intervalo de nível 18 até um limite superior dele. Obviamente, um maior comprimento das sequências de símbolo consume uma maior velocidade de transmissão dentro do fluxo de dados, para o qual devem ser codificados os coeficientes de transformação. Geralmente, é preferível se o comprimento da sequência de símbolos, para a qual um certo nível é mapeado, se correlacione com a atual probabilidade, na qual o nível de coeficientes de transformação por codificar atualmente assume o respetivo nível. Naturalmente, a última declaração é também válida para os níveis fora do segundo intervalo de nível 18 dentro do primeiro intervalo de nível 16 ou para o primeiro esquema de simbolização em geral.
[037] Em particular, como se pode ver na Fig. 3, os coeficientes de transformação mostram tipicamente uma certa estatística ou probabilidade de ocorrência de certos níveis de coeficientes de transformação. A Fig. 3 mostra um gráfico que associa a cada possível nível de coeficientes de transformação x uma probabilidade, na qual o respetivo nível de coeficientes de transformação é atualmente assumido por um coeficiente de transformação em questão. Para ser mais preciso, a Fig. 3 mostra dois dessas associações ou curvas de probabilidade, nomeadamente para dois coeficientes de contextos diferentes. Isto é, a Fig. 3 assume que os coeficientes de transformação são diferenciados de acordo com os seus contextos, tal como determinado pelos valores de coeficientes de transformação dos coeficientes de transformação vizinhos. Dependendo do contexto, a Fig. 3 mostra que a curva de probabilidade, que associa um valor de probabilidade a cada nível de coeficientes de transformação, pode depender do contexto do coeficiente de transformação em questão.
[038] De acordo com as versões descritas abaixo, os símbolos das sequências de símbolo do primeiro esquema de simbolização 16 são entropicamente codificados em um modo adaptativo de contexto. Isto é, um contexto é associado aos símbolos, e a distribuição de probabilidade de alfabeto associada ao contexto selecionado é utilizada para codificar entropicamente o respetivo símbolo. Os símbolos das sequências de símbolo do segundo esquema de simbolização são inseridos no fluxo de dados diretamente ou usando uma distribuição de probabilidade de alfabeto fixo, como uma distribuição de probabilidade igual, de acordo com a qual todos os membros do alfabeto são igualmente prováveis.
[039] Os contextos usados na codificação entrópica de símbolos do primeiro esquema de simbolização têm de ser selecionados apropriadamente, de modo a permitir uma boa adaptação da distribuição de probabilidade de alfabeto estimado às atuais estatísticas de alfabeto. Isto é, o esquema de codificação entrópica pode ser configurado para atualizar a estimativa atual da distribuição de probabilidade do alfabeto de contexto sempre que um símbolo com este contexto é codificado/descodificado, aproximando assim as atuais estatísticas de alfabeto. A aproximação é mais rápida se os contextos forem escolhidos apropriadamente, com a precisão necessária, mas não com demasiados contextos diferentes para evitar uma associação demasiado infrequente de símbolos com certos contextos.
[040] De igual modo, o parâmetro de simbolização para um coeficiente deve ser escolhido em função dos coeficientes previamente codificados/descodificados, de modo a aproximar o máximo possível as atuais estatísticas de alfabeta. Uma diversificação demasiado precisa não é aqui um assunto crítico porque o parâmetro de simbolização é diretamente determinado a partir dos coeficientes previamente codificados/descodificados, mas a determinação deve corresponder de perto à correlação da dependência da curva de probabilidade dentro do segundo intervalo 18 sobre os coeficientes previamente codificados/descodificadas.
[041] Tal como será descrito em mais pormenor abaixo, as versões para codificar coeficientes de transformação mais descritos abaixo são vantajosos pelo fato de ser utilizada uma função comum para obter a adaptatividade de contexto e a determinação de parâmetro de simbolização. A escolha do contexto correto é, conforme acima delineado, importante para obter uma alta eficiência de codificação ou taxa de compressão, e o mesmo aplica-se relativamente ao parâmetro de simbolização. As versões abaixo descritas permitem alcançar este objetivo, mantendo os custos gerais baixos para produzir a dependência sobre os coeficientes previamente codificados/descodificados. Em particular, os inventores do presente pedido encontrou um modo para um bom compromisso entre realizar uma eficiente dependência sobre coeficientes previamente codificados/descodificados, por um lado, e reduzir o número da lógica de proprietário para produzir as dependências de contexto individual, por outro lado.
[042] A Fig. 4 mostra um aparelho para codificar uma série de coeficientes de transformação com níveis de coeficientes de transformação em um fluxo de dados de acordo com uma versão da presente invenção. Note-se que, na seguinte descrição, o alfabeto de símbolos é frequentemente assumido como sendo um alfabeto binário, apesar de esta assunção ser, conforme delineado acima, não crítica para a presente invenção e, correspondentemente, todas estas explicações devem ser interpretadas como sendo também ilustrativas para uma extensão para outros alfabetos de símbolos.
[043] O aparelho da Fig. 4 é para codificar uma série de coeficientes de transformação que entram em uma entrada 30 para o fluxo de dados 32. O aparelho compreende um simbolizador 34, um codificador entrópico adaptativo de contexto 36, um determinador de parâmetro de simbolização 38 e um insersor 40.
[044] O simbolizador 34 tem as suas entradas ligadas à entrada 30 e está configurado para mapear o coeficiente de transformação que introduz atualmente as suas entradas para símbolos do modo descrito acima relativamente à Fig. 2. Isto é, o simbolizador 34 está configurado para mapear um coeficiente de transformação atual para um primeiro conjunto de um ou mais símbolos de acordo com um primeiro esquema de simbolização, se o nível de coeficiente de transformação do coeficiente de transformação atual x estiver dentro do primeiro intervalo de nível 16 e, se o nível de coeficiente de transformação do coeficiente de transformação atual estiver dentro do segundo intervalo de nível 18, para uma combinação de um segundo conjunto de símbolos, para o qual um nível máximo do primeiro intervalo de nível 16 é mapeado de acordo com o primeiro esquema de simbolização, e um terceiro conjunto de símbolos dependente de uma posição do nível de coeficiente de transformação do coeficiente de transformação atual dentro do segundo intervalo de nível 18, de acordo com um segundo esquema de simbolização. Por outras palavras, o simbolizador 34 está configurado para mapear um coeficiente de transformação atual para uma primeira sequência de símbolos do primeiro esquema de simbolização, no caso de o nível de coeficiente de transformação do coeficientes de transformação atual estar dentro do primeiro intervalo de nível 16 mas fora do segundo intervalo de nível, e para uma combinação da sequência de símbolos do primeiro esquema de simbolização para o nível máximo do primeiro intervalo de nível 16 e uma sequência de símbolos do segundo esquema de simbolização, no caso de o nível de coeficiente de transformação do coeficiente de transformação atual esta dentro do segundo intervalo de nível.
[045] O simbolizador 34 tem duas saídas, nomeadamente uma para sequências de símbolo do primeiro esquema de simbolização, e outra para as sequências de símbolo do segundo esquema de simbolização. O insersor 40 tem uma entrada para receber as sequências de símbolo do segundo esquema de simbolização 42 e o codificador entrópico adaptativo de contexto 36 tem uma entrada para receber as sequências de símbolo do primeiro esquema de simbolização 44. Além disso, o simbolizador 34 tem uma entrada de parâmetro para receber o parâmetro de simbolização 46 de uma saída do determinador de parâmetro de simbolização 38.
[046] O codificador entrópico adaptativo de contexto 36 está configurado para codificar entropicamente o símbolo das primeiras sequências de símbolo 44 para dentro do fluxo de dados 32. O insersor 40 está configurado para inserir as sequências de símbolo 42 no fluxo de dados 32.
[047] De um modo geral, tanto o codificador entrópico 36 como o insersor 40 analisam sequencialmente os coeficientes de transformação. Obviamente, o insersor 40 meramente opera para coeficientes de transformação, cujo nível de coeficientes de transformação está dentro do segundo intervalo de nível 18. No entanto, tal como será descrito em mais detalhe abaixo, existem diferentes possibilidades para definir a ordem entre a operação do codificador entrópico 36 e o insersor 40. De acordo com uma primeira versão, o aparelho de codificação da Fig. 4 está configurado para analisar os coeficientes de transformação em um único scan, de modo a que o insersor 40 insira a sequência de símbolos 42 de um coeficiente de transformação no fluxo de dados 32 subsequente à codificação entrópica do codificador entrópico da primeira sequência de símbolos 44 relacionada com o mesmo coeficiente de transformação para dentro do fluxo de dados 32 e antes da codificação entrópica do codificador entrópico da sequência de símbolos 44 relacionada com o próximo coeficiente de transformação em linha para dentro do fluxo de dados 32.
[048] De acordo com uma versão alternativa, o aparelho usa dois scans, em que, dentro do primeiro scan, o codificador entrópico adaptativo de contexto 36 sequencialmente codifica as sequências de símbolo 44 para dentro do fluxo de dados 32 para cada coeficiente de transformação com insersor 40, inserindo depois as sequências de símbolo 42 para esses coeficientes de transformação, cujo nível de coeficientes de transformação fica dentro do segundo intervalo de nível 18. Podia até haver esquemas mais sofisticados, de acordo com os quais, por exemplo, o codificador entrópico adaptativo de contexto 36 usa vários scans para codificar os símbolos individuais das primeiras sequências de símbolo 44 para dentro do fluxo de dados 32, como o primeiro símbolo ou bin em um primeiro scan, seguido por um segundo símbolo ou bin das sequências 44 em um segundo scan e assim por diante.
[049] Tal como já foi indicado acima, o codificador entrópico adaptativo de contexto 36 está configurado para codificar entropicamente pelo menos um símbolo pré-determinado das sequências de símbolos 44 para dentro do fluxo de dados 32 em um modo adaptativo de contexto. Por exemplo, a adaptatividade de contexto podia ser usada para todos os símbolos das sequências de símbolos 44. Em alternativa, o codificador entrópico adaptativo de contexto 36 pode restringir a adaptatividade de contexto aos símbolos na primeira posição e às sequências de símbolos do primeiro esquema de simbolização apenas, ou o primeiro e o segundo, ou o primeiro para terceiras posições e assim por diante.
[050] Tal como descrito acima, para a adaptatividade de contexto, o codificador 36 gere contextos ao armazenar e atualizar uma estimativa de distribuição de probabilidade de alfabeto para cada contexto. Sempre que é codificado um certo contexto, a estimativa atual de distribuição de probabilidade de alfabeto é atualizada, usando o valor atual deste símbolo, aproximando assim as estatísticas de alfabeto atual do símbolo desse contexto.
[051] De igual modo, o determinador do parâmetro de simbolização 38 está configurado para determinar o parâmetro de simbolização 46 para o segundo esquema de simbolização e as suas sequências de símbolos 42 dependendo dos coeficientes de transformação previamente codificados.
[052] Para ser mais preciso, o codificador entrópico adaptativo de contexto 36 está configurado de modo que o mesmo usa ou seleciona para o coeficientes de transformação atual um contexto dependendo, através de uma função parametrizável através de um parâmetro de função, e com o parâmetro de função definido para a primeira definição, dos coeficientes de transformação previamente codificados, enquanto o determinador do parâmetro de símbolo 38 está configurado para determinar o parâmetro de simbolização 46 dependendo, através da mesma função, e com o parâmetro de função definido para uma segunda definição, dos coeficientes de transformação previamente codificados. As definições podem diferir, mas como o determinador do parâmetro de simbolização 38 e o codificador entrópico adaptativo de contexto 36 usam a mesma função, os custos gerais lógicos podem ser reduzidos. Meramente o parâmetro de função pode diferir entre a seleção de contexto do codificador entrópico 36, por um lado, e a determinação do parâmetro de simbolização do determinador do parâmetro de simbolização 38, por outro lado.
[053] No que diz respeito à dependência dos coeficientes de transformação previamente codificados, note-se que esta dependência é restrita na medida em que estes coeficientes de transformação previamente codificados já foram codificados para o fluxo de dados 32. Imagine, por exemplo, que esse tipo de coeficientes de transformação previamente codificados fica dentro do segundo intervalo de nível 18, mas a sequência de símbolos 42 disso ainda não foi inserida no fluxo de dados 32. Nesse caso, o determinador do parâmetro de simbolização 38 e o codificador entrópico adaptativo de contexto 36 meramente sabem da primeira sequência de símbolos 44 desse coeficiente de transformação previamente codificado que o mesmo fica dentro do segundo intervalo de nível 18. Nesse caso, o nível máximo do primeiro intervalo de nível 16 pode servir como um representativo para este coeficiente de transformação previamente codificado. Por enquanto, a dependência “dos coeficientes de transformação previamente codificados” deve ser entendida de um modo amplo, de modo a abranger uma dependência da “informação ou de outros coeficientes de transformação previamente codificados/inseridos no fluxo de dados 32”. Além disso, os coeficientes de transformação que ficam “para além” da última posição L do coeficiente que não zero podem ser considerados zero.
[054] Para finalizar a descrição da Fig. 4, as saídas do codificador entrópico 36 e insersor 40 são apresentadas como estando ligadas a uma saída comum 48 do aparelho através de um interruptor 50, com a mesma conectividade que existe entre entradas para informação previamente inserida/codificada do determinador de parâmetro de simbolização 38 e codificador entrópico adaptativo de contexto 36, por um lado, e as saídas do codificador entrópico 36 e insersor 40, por outro lado. O interruptor 50 liga a saída 48 a uma das saídas do codificador entrópico 36 e insersor 40 pela ordem mencionada acima relativamente às várias possibilidades de usar um, dois ou mais scans para codificar os coeficientes de transformação.
[055] Para explicar o uso comum da função parametrizável relativamente ao codificador entrópico adaptativo de contexto 36 e determinador de parâmetro de simbolização 38 em termos mais específicos, é feita referência à Fig. 1. A função pode ser co-utilizada pelo codificador entrópico 36 e o determinador de parâmetro de simbolização 38 é indicado por 52 na Fig. 1, nomeadamente g(f(x)).
[056] A função é aplicada a um conjunto de coeficientes de transformação previamente codificados, que podem, conforme explicado acima, ser definidos para abranger esses coeficientes de transformação previamente codificados com uma certa relação espacial relativamente ao coeficiente atual. Serão delineados abaixo, em mais detalhe, versões específicas para esta função. De um modo geral, f é a função que combina o conjunto de níveis de coeficientes previamente codificados em uma escala, em que g é a função que verifica em que intervalo a escala está. Por outras palavras, a função g(f(x)) é aplicada a um conjunto x de coeficientes de transformação previamente codificados. Na Fig. 1, o coeficiente de transformação 12 indicado por uma pequena cruz denota, por exemplo, o coeficiente de transformação atual, e os coeficientes de transformação planeados 12 indicam o conjunto x de coeficientes de transformação, ao qual a função 52 é aplicada para obter um parâmetro de simbolização 46 e um índice de contexto entrópico 54 que indexa o contexto para o coeficiente de transformação atual x. Conforme ilustrado na Fig. 1, pode ser utilizado um template local, que define uma disposição relativa espacial à volta do coeficiente de transformação atual, para determinar o conjunto x de relevantes coeficientes de transformação previamente codificados de entre todos os coeficientes de transformação previamente codificados. Como se pode ver na Fig. 1, o template 56 pode abranger o coeficiente de transformação imediatamente ao lado abaixo e para a direita do coeficiente de transformação atual. Ao escolher um template como este, as sequências de símbolos 42 e 44 dos coeficientes de transformação em uma diagonal do scan 140 podem ser codificados em paralelo uma vez que nenhum dos coeficientes de transformação em uma diagonal cai para o template 56 de outro coeficiente de transformação na mesma diagonal. Naturalmente, templates similares podem ser encontrados para scans em linha e coluna.
[057] Para providenciar exemplos mais específicos para a função comumente utilizada g(f(x)) e os correspondentes parâmetros de função, a seguir esses exemplos são providenciados usando uma respectiva fórmula. Em particular, o aparelho da Fig. 4 pode ser configurado de modo a que a função 52 que define a relação entre um conjunto x de coeficientes de transformação previamente codificados, por um lado, e um número do índice de contexto 54 que indexa o contexto e o parâmetro de simbolização 46, por outro lado, é
Figure img0001
com
Figure img0002
em que: t e {ni.,nd/ }= n função, x = {:1,.,:d} com Xi com i G {1...d} representando um coeficiente de transformação previamente descodificado i, Wi são valores de correção, podendo cada um ser igual a um ou desigual a e, e h é uma constante ou função de Xi.
[058] Segue-se que g(f (x)) está dentro de [0,df]. Se g(f (x)) for utilizado para definir um número de desvio do índice de contexto ctxoffset que é somado também com pelo menos um número de desvio do índice de contexto base ctxbase, então a faixa de valor do resultante índice de contexto ctx= ctxbase + ctxoffset é [ctxbase ; ctxbase + df]. Sempre que for mencionado que diferentes conjuntos de contextos são utilizados para símbolos de códigos entrópicos de sequências de símbolos 44, então ctxbase é escolhido de modo diferente, de forma que [ctxbase,1 ; ctxbase + df] não se sobreponha [ctxbase,2 ; ctxbase + df]. Isto é, por exemplo, verdadeiro para: coeficientes de transformação que pertencem a blocos de transformação de diferente tamanho; coeficientes de transformação que pertencem a blocos de transformação de diferente tipo de componente de informação, como a profundidade, luminância, crominância e assim por diante; coeficientes de transformação que pertencem a diferentes porções de frequência do mesmo bloco de transformação;
[059] Conforme mencionado acima, o parâmetro de simbolização pode ser um parâmetro Rice k. Isto é, os níveis (absolutos) dentro do intervalo 16, isto é X, com X + M = x (em que M é o nível máximo do intervalo 16 e x é o nível de coeficientes de transformação (absoluto)), seriam mapeados para uma série de bins com um prefixo e um sufixo, sendo o prefixo um código unário de _X • 2 - k _ , e o sufixo um código binário do remanescente de X • 2-k.
[060] df pode também fazer parte do parâmetro de função. d pode também fazer parte do parâmetro de função.
[061] Uma diferença no parâmetro de função, como entre a seleção de contexto e a determinação do parâmetro de simbolização, necessita meramente de uma diferença em t, {n1,..,nd }= n, df (se fizer parte do parâmetro de função), ou d (se fizer parte do parâmetro de função).
[062] Conforme explicado acima, o índice i pode indexar os coeficientes de transformação 12 dentro do template 56. xi pode ser definido para zero no caso da respectiva posição do template estar fora do bloco de transformação. Além disso, o codificador entrópico adaptativo de contexto 36 pode estar configurado de modo a que a dependência do contexto dos coeficientes de transformação previamente codificados através da função é tal que xi é igual ao nível de coeficiente de transformação do coeficiente de transformação previamente codificado i no caso de o mesmo estar dentro do primeiro intervalo de nível 16, e é igual ao nível máximo do primeiro intervalo de nível 16, no caso de o nível de coeficientes de transformação do coeficiente de transformação previamente codificado i estar dentro do segundo intervalo de nível 18, ou é tal que xi é igual ao nível de coeficientes de transformação do coeficiente de transformação previamente codificado i, independentemente do nível de coeficientes de transformação do coeficiente de transformação previamente codificado i estar dentro do primeiro ou do segundo intervalo de nível.
[063] No que diz respeito ao determinador de parâmetro de simbolização, o mesmo pode estar configurado de modo a que, na determinação do parâmetro de simbolização, xi seja igual ao nível de coeficiente de transformação do coeficiente de transformação previamente codificado i, independentemente do nível de coeficiente de transformação do coeficiente de transformação previamente codificado i estar dentro do primeiro ou do segundo intervalo de nível.
[064] O aparelho pode ainda estar configurado de modo a que n1 <... < nd se aplica em qualquer caso.
[065] O aparelho pode também estar configurado de modo a que h = H - t .
[066] Noutra versão, o aparelho pode estar configurado para determinar espacialmente os coeficientes de transformação previamente codificados dependendo de uma disposição relativa espacial dos coeficientes de transformação relativamente ao coeficiente de transformação atual, isto é, com base no template à volta da posição do coeficiente de transformação atual.
[067] O aparelho pode ainda estar configurado para determinar uma posição de um último coeficiente de transformação diferente de zero L de entre coeficientes de transformação de um bloco de coeficientes de transformação 10 ao longo de uma ordem de scan pré-determinada 14, e para inserir informação sobre a posição dentro do fluxo de dados 32, em que os vários coeficientes de transformação abrangem os coeficientes de transformação a partir do último coeficiente de transformação diferente de zero L para o início de uma ordem de scan pré-determinada, isto é, um coeficiente de transformação do componente DC.
[068] Noutra versão, o simbolizador 34 pode estar configurado para usar um primeiro esquema de simbolização modificado para a simbolização do último coeficiente de transformação L. De acordo com o primeiro esquema de simbolização modificado, apenas os níveis de coeficiente de transformação quer não zero dentro do primeiro intervalo de nível 16 podem ser mapeados, enquanto se presume que um nível zero não se aplica ao último coeficiente de transformação L. Por exemplo, o primeiro bin da binarização unária truncada pode ser suprimida para o coeficiente L.
[069] O codificador entrópico adaptativo de contexto pode estar configurado para usar um conjunto separado de contextos para a codificação entrópica do primeiro conjunto de um ou mais símbolos para o último coeficiente de transformação diferente de zero, separado dos contextos usados na codificação entrópica do primeiro conjunto de um ou mais símbolos de outro que não o último coeficiente de transformação diferente de zero.
[070] O codificador entrópico adaptativo de contexto pode atravessar a série de coeficientes de transformação em uma ordem de scan oposta desde o coeficiente de transformação diferente de zero até ao coeficiente de transformação DC do bloco de coeficientes de transformação. Isto pode ou não aplicar-se também às segundas sequências de símbolos 42.
[071] O aparelho pode estar também configurado para codificar os vários coeficientes de transformação para o fluxo de dados 32 em dois scans, em que o codificador entrópico adaptativo de contexto 36 pode estar configurado para codificar entropicamente as primeiras sequências de símbolos 44 para os coeficientes de transformação para o fluxo de dados 32 em uma ordem correspondente a um primeiro scan dos coeficientes de transformação, em que o insersor 40 está configurado para subsequentemente inserir as sequências de símbolos 42 para os coeficientes de transformação que têm um nível de coeficiente de transformação dentro do segundo intervalo de nível 18 para o fluxo de dados 32 em uma ordem correspondente para uma ocorrência dos coeficientes de transformação que têm um nível de coeficiente de transformação dentro do segundo intervalo de nível 18 dentro de um segundo scan dos coeficientes de transformação. É apresentado na Fig, 5a um exemplo para o resultante fluxo de dados 32: pode compreender, opcionalmente, uma informação 57 sobre a posição de L, seguida pelas sequências de símbolos 42 em forma codificada entrópica (pelo menos alguns na forma codificada entrópica adaptativa de contexto) e depois seguida pelas sequências de símbolos 44 inseridas diretamente ou usando, por exemplo, o modo bypass (alfabeto provável igual).
[072] Noutra versão, o aparelho de acordo pode estar configurado para codificar vários coeficientes de transformação para o fluxo de dados 23 sequencialmente em um scan, em que o codificador entrópico adaptativo de contexto 36 e o insersor 40 estão configurados para inserir, para cada coeficiente de transformação em uma ordem de scan do (um) scanner, as sequências de símbolos 42 dos respectivos coeficientes de transformação que têm um nível de coeficiente de transformação dentro do segundo intervalo de nível 18 para dentro do fluxo de dados 32 imediatamente subsequente à codificação entrópica do codificador entrópico adaptativo de contexto da sequência de símbolos 44 no fluxo de dados 32, juntamente com o qual o mesmo forma a combinação para a qual os mesmos coeficientes de transformação são mapeados, de modo a que as sequências de símbolos 42 sejam espalhadas para o fluxo de dados 32 entre as sequências de símbolos 44 dos coeficientes de transformação. O resultado é ilustrado na Fig. 5b.
[073] O insersor 40 pode estar configurado para inserir as sequências de símbolos 42 no fluxo de dados diretamente ou usando a codificação entrópica, usando uma distribuição de probabilidade fixa. O primeiro esquema de simbolização pode ser um esquema de binarização unário truncado. O segundo esquema de simbolização pode ser tal que as sequências de símbolos 42 sejam de um código Rice.
[074] Tal como já foi mencionado acima, as versões da Fig. 4 podem ser implementadas dentro de um codificador de imagem/vídeo. Um exemplo de um codificador de imagem/vídeo destes é apresentado na Fig. 6. O codificador de imagem é geralmente indicado com o número de referência 60 e compreende um aparelho 62 correspondente ao apresentado na Fig. 4, por exemplo. O codificador 60 está configurado para, na codificação de uma imagem 64, transformar blocos 66 da imagem 64 em blocos de coeficientes de transformação 10, que são depois tratados pelo aparelho 62, de modo a codificar, por bloco de transformação 10, uma série de coeficiente de transformação seus. Em particular, o aparelho 62 processa blocos de transformação 10, bloco de transformação a bloco de transformação. Ao fazê- lo, o aparelho 62 pode usar a função 52 para blocos 10 de diferentes tamanhos. Por exemplo, pode ser utilizada uma subdivisão hierárquica de múltiplas árvores para decompor imagem 64 ou blocos de raízes de árvore suas, em blocos 66 de diferentes tamanhos. Os blocos de transformação 10 resultantes da aplicação de uma transformação a estes blocos 66 são, correspondentemente, também de tamanho diferente e, apesar de correspondentemente a função 52 poder ser otimizada para os diferentes tamanhos de bloco através da utilização de diferentes parâmetros de função, os custos gerais para providenciar essas diferentes dependências para o parâmetro de simbolização, por um lado, e o índice de contexto, por outro lado, são mantidos baixos.
[075] A Fig. 7 mostra um aparelho para descodificar uma série de coeficientes de transformação com níveis de coeficiente de transformação a partir de um fluxo de dados 32, que se adapta ao aparelho delineado acima relativamente à Fig. 4. Em particular, o aparelho da Fig. 7 compreende um descodificador entrópico adaptativo de contexto 80, um dessimbolizador 82 e um extrator 84, assim como, um determinador de parâmetro de simbolização 86. O descodificador entrópico adaptativo de contexto 80 está configurado para, para um coeficiente de transformação atual, descodificar entropicamente um primeiro conjunto de um ou mais símbolos, isto é, uma sequência de símbolos 44, a partir do fluxo de dados 32. O dessimbolizador 82 está configurado para mapear o primeiro conjunto de um ou mais símbolos, isto é, a sequência de símbolos 44, para um nível de coeficiente de transformação dentro do primeiro intervalo de nível 16 de acordo com um primeiro esquema de simbolização. Para ser mais preciso, o descodificador entrópico adaptativo de contexto 80 e o dessimbolizador 82 operam de um modo interativo. O dessimbolizador 82 informa o descodificador entrópico adaptativo de contexto 80 através de um sinal 88, no qual o símbolo sequencialmente descodificado pelo descodificador 80 a partir do fluxo de dados 32 finalizou uma sequência de símbolos válida do primeiro esquema de simbolização.
[076] Um extrator 84 está configurado para, se o nível de coeficiente de transformação para o qual o primeiro conjunto de um ou mais símbolos, isto é, a sequência de símbolos 44, está mapeada de acordo com o primeiro esquema de simbolização for o nível máximo do primeiro intervalo de nível 16, extrair um segundo conjunto de símbolos, isto é, a sequência de símbolos 42, a partir do fluxo de dados 32. Mais uma vez, o dessimbolizador 82 e o extrator 84 podem operar em concerto. Isto é, o dessimbolizador 82 pode informar o extrator 84 por um sinal 90 quando foi finalizada uma sequência de símbolos válida do segundo esquema de simbolização, podendo o extrator 84 depois terminar a extração da sequência de símbolos 42.
[077] O dessimbolizador 82 está configurado para mapear o segundo conjunto de símbolos, isto é, a sequência de símbolos 42, para uma posição dentro de um segundo intervalo de nível 18 de acordo com um segundo esquema de simbolização, conforme já mencionado acima, que é parametrizável de acordo com o parâmetro de simbolização 46,
[078] O descodificador entrópico adaptativo de contexto 80 está configurado para, na descodificação entrópica de pelo menos um símbolo pré- determinado da primeira sequência de símbolos 44, usar um contexto dependente, através da função 52, dos coeficientes de transformação previamente descodificados. O determinador de parâmetros de simbolização 86 configurado para, se o nível de coeficiente de transformação para o qual a primeira sequência de símbolos 44 é mapeada de acordo com o primeiro esquema de simbolização for o nível máximo do primeiro intervalo de nível 16, determinar o parâmetro de simbolização 46 dependente, através da função 52, dos coeficientes de transformação previamente descodificados. Com esta finalidade, as entradas do descodificador entrópico 80 e determinador de parâmetros de simbolização 86 estão ligadas, através de um interruptor 92, a uma saída do dessimbolizador 82, na qual o dessimbolizador 82 emite valores xi dos coeficientes e transformação.
[079] Tal como descrito acima, para a adaptatividade de contexto, o descodificador 80 gere contextos ao armazenar e atualizar uma estimativa de distribuição de probabilidade de alfabeto para cada contexto. Sempre que um símbolo codifica um certo contexto, a estimativa atual de distribuição de probabilidade de alfabeto é atualizada, usando o valor atual/descodificado deste símbolo, aproximando assim as estatísticas de alfabeto atual do símbolo desse contexto.
[080] De igual modo, o determinador do parâmetro de simbolização 86 está configurado para determinar o parâmetro de simbolização 46 para o segundo esquema de simbolização e as suas sequências de símbolos 42 dependendo dos coeficientes de transformação previamente descodificados.
[081] Geralmente, todas as possíveis possibilidades e outros detalhes acima descritos relativamente à codificação são também transferíveis para o aparelho para descodificação da Fig. 7.
[082] A Fig. 8 mostra em anexo à Fig. 6. Isto é, o aparelho da Fig. 7 pode ser implementado dentro do descodificador de imagem 100. O descodificador de imagem 100 da Fig. 7 compreende um aparelho de acordo com a Fig. 7, nomeadamente o aparelho 102. O descodificador de imagem 100 está configurado para, na descodificação ou reconstrução de uma imagem 104, retransformar blocos 106 de imagem 104 dos blocos de coeficientes de transformação 10, cuja série de coeficientes de transformação o aparelho 102 descodifica a partir do fluxo de dados 32 que, por sua vez, introduz um descodificador de imagem 100. Em particular, o aparelho 102 processa blocos de transformação 10, bloco a bloco, e pode, como já foi mencionado acima, usar a função 52 comumente para blocos 106 de diferentes tamanhos.
[083] Note-se que o codificador e descodificador de imagem 60 e 100, respectivamente, podem estar configurados para usar a codificação preditiva com aplicação da transformação/retransformação para o residual de predição. Além disso, o fluxo de dados 32 pode ter informação de subdivisão codificada aí, que sinaliza ao descodificador de imagem 100 a subdivisão para os blocos individualmente sujeitos a transformação.
[084] Mais abaixo, as versões acima são novamente descritas por algumas outras palavras, e providenciando mais detalhes sobre os aspetos específicos, cujos detalhes podem ser individualmente transferidos para os modelos acima. Isto é, as versões acima relacionadas com um modo específico da modelação de contexto para a codificação de elementos de sintaxe relacionados com coeficientes de transformação, como na imagem baseada em bloco e codificadores de vídeo, e os seus aspetos são descritos e destacados mais abaixo.
[085] As versões podem referir-se ao campo de processamento de sinal digital e, em particular, a um método e aparelho para descodificadores e codificadores de imagem e vídeo. Em particular, a codificação de coeficientes de transformação e seus elementos de sintaxe associados em codecs de imagem baseada em bloco e de vídeo pode ser realizada de acordo com as versões descritas. Neste sentido, algumas versões representavam uma modelação de contexto melhorada para a codificação de elementos de sintaxe relacionados com coeficientes de transformação com um codificador entrópico que emprega uma modelação de probabilidade. Além disso, a derivação de um parâmetro Rice, que é utilizado para a binarização adaptativa dos remanescentes coeficientes de transformação absolutos, pode ser feita conforme descrita acima relativamente ao parâmetro de simbolização. Unificação, simplificação, processamento paralelo, utilização moderada e fácil da memória em termos de memória de contexto são os benefícios das versões comparativamente com a modelação de contexto a direito.
[086] Por outras palavras ainda, as versões da presente invenção podem revelar uma nova abordagem para a seleção do modelo de contexto de elementos de sintaxe relacionados com a codificação de coeficientes de transformação em codificadores de imagem baseada em bloco e de vídeo. Foram ainda descritas as regras de derivação para um parâmetro de simbolização, como um parâmetro Rice, que controla a binarização de um valor remanescente de um coeficiente de transformação absoluto. Essencialmente, as versões acima utilizaram um conjunto simples e habitual de regras para a seleção do modelo de contexto para todos, ou uma parte, dos elementos de sintaxe relacionados com a codificação dos coeficientes de transformação.
[087] O primeiro esquema de simbolização acima mencionado pode ser uma binarização unária truncada. Neste caso, coef_significante_bandeira, coef_dis_maior_1, e coef_dis_maior_2 podem ser os nomes dados aos elementos de sintaxe binários ou aos símbolos que formam a primeira, a segunda e o terceiro bin resultante da binarização unária truncada de um coeficiente de transformação. Conforme descrito acima, a binarização unária truncada pode meramente representar um prefixo, que pode ser acompanhando pelo sufixo, sendo ele próprio um código Rice no caso de o nível de coeficiente de transformação cair dentro do segundo intervalo de nível 18. Outro sufixo pode ser de um código Exp-Golomb, como da ordem 0, formando outro intervalo de nível que segue o primeiro e o segundo intervalos 16 e 18 na Fig. 2 (não ilustrado na Fig. 2).
[088] A derivação do parâmetro Rice para a binarização adaptativa do remanescente coeficiente de transformação absoluto pode ser feito, conforme descrito acima, com base no mesmo conjunto de regras 52 tal como usado para a seleção do modelo de contexto.
[089] Relativamente à ordem de scan, note-se que o mesmo pode ser variado comparativamente com a descrição acima. Além disso, os diferentes tamanhos e formas de blocos podem ser suportados pelos aparelhos da Fig. 4 e 6, usando, porém, o mesmo conjunto de regras, isto é, usando a mesma função 52. Correspondentemente, pode conseguir-se um esquema unificado e simplificado para a seleção do modelo de contexto dos elementos de sintaxe relacionados com a codificação dos coeficientes de transformação combinado com uma harmonização para a derivação do parâmetro de simbolização. Por conseguinte, a seleção do modelo de contexto e derivação do parâmetro de simbolização podem usar a mesma lógica, que pode ser ligada por cabo, hardware programado ou uma sub-rotina de software, por exemplo.
[090] Para conseguir um esquema simples e comum para a seleção do modelo de contexto e derivação do parâmetro de simbolização, como o parâmetro Rice, os coeficientes de transformação já codificados de um bloco ou uma forma podem ser avaliados conforme descrito acima. Para avaliar os coeficientes de transformação já codificados, a separação na codificação de coef_significante_bandeira, que é o primeiro bin resultante da binarização (que pode ser referida como a codificação do mapa de significância), e o valor absoluto remanescente do nível de coeficiente de transformação é realizado usando uma função comum 52.
[091] A codificação da informação de sinal pode se feita de um modo intercalado, isto é, codificando o sinal diretamente depois da codificação do coeficiente de transformação absoluto. Por conseguinte, todos os coeficientes de transformação podiam ser codificados apenas na passe de scan. Em alternativa, a informação de sinal pode ser codificada em um caminho de scan separado, enquanto os valores de avaliação f(x) se baseiam apenas em uma informação de nível absoluto.
[092] Conforme foi denotado acima, os coeficientes de transformação podem ser codificados em uma única passe de scan ou em múltiplas passes de scan. Isto pode ser conseguido por, ou descrito por, um conjunto de corte c, cujos coeficientes ci indicam o número de símbolos da simbolização do coeficiente de transformação (primeira e segunda) processada em scan i. No caso de um conjunto de cortes vazio, pode ser usado um scan. Para melhorar os resultados para a seleção do modelo de contexto e a derivação do parâmetro de simbolização, o primeiro parâmetro de corte c0 do conjunto de cortes c deve ser maior do que um.
[093] Note que o conjunto de cortes c pode ser escolhido para ser c={c0; c1} com c0=1 e c1=3 e |c|=2, em que c0 indica o número de bins/símbolos da primeira binarização, incluídos no primeiro scan, e c1=3 indica a posição do símbolo dentro da primeira binarização, até à qual os símbolos da primeira binarização estão cobertos para serem um segundo scan. Outro exemplo é dado quando o esquema codifica o primeiro bin resultante da binarização para um bloco inteiro ou forma em uma primeira passe de scan, depois o segundo bin para o bloco inteiro ou forma em uma segunda passe de scan, com c0 igual a um, c1 igual a dois, e assim por diante.
[094] O template local 56 para a codificação do coef_significante_bandeira, isto é, o primeiro bin do processo de binarização, pode ser concebido tal como exibido na Fig. 1 ou na Fig. 9. Como uma unificação e simplificação, o template local 56 pode ser utilizado para todos os tamanhos e formas de blocos. Em vez de avaliar o número de vizinhos com coeficiente de transformação diferente de zero apenas, todos os coeficientes de transformação são introduzidos na função 52 em forma de xi. Note que o template local 56 pode ser fixo, isto é, independentemente da posição do coeficiente de transformação atual ou do índice de scan e independentemente dos coeficientes de transformação previamente codificados, ou adaptativo, isto é, dependente da posição do coeficiente de transformação atual ou do índice de scan e/ou dos coeficientes de transformação previamente codificados, e o tamanho pode ser fixo ou adaptativo. Além disso, quando o tamanho e a forma do template é ajustado, permitindo a cobertura de todas as posições de scan de um bloco ou uma forma, são utilizados todos os coeficientes de transformação já codificados ou todos os coeficientes de transformação já codificados até um limite específico para o processo de avaliação.
[095] Como um exemplo, a Fig. 9 mostra outro exemplo para o template local 56, que pode ser utilizado para um bloco de transformação 8x8 10 com scan diagonal 14. L denota a última posição de scan significante e as posições de scan marcadas com um x denota a posição de scan atual. Note que para outras ordens de scan, o template local pode ser modificado para se adaptar à ordem de scan 14. Por exemplo, no caso de um scan diagonal direito, o template local 56 pode ser deslocado ao longo das diagonais.
[096] A seleção do modelo de contexto e a derivação do parâmetro de simbolização podem basear-se em diferentes valores de avaliação f(x) resultantes da avaliação de vizinhos já codificados xi. Esta avaliação é feita para todas as posições de scan com vizinhos já codificados cobertos pelo template local 56. O template local 56 tem um tamanho variável ou fixo e pode depender da ordem de scan. No entanto, a forma e o tamanho do template é uma adaptação à ordem de scan apenas e, por isso, a derivação dos valores f(x) é independente da ordem de scan 140 e da forma e tamanho do template 56. Note que a definição do tamanho e da forma do template 56, de modo a poder cobrir todas as posições de scan de um bloco 10 para cada posição de scan, conseguindo usar todos os coeficientes de transformação já codificados no bloco atual ou forma.
[097] Tal como afirmado antes, a seleção dos índices do modelo de contexto e a derivação do parâmetro de simbolização usam valores de avaliação f(x). De um modo geral, um conjunto genérico de funções de mapeamento mapeia os resultantes valores de avaliação f(x) para um índice do modelo de contexto em um parâmetro de simbolização específico. Adicionalmente a isso, pode ser utilizada uma informação adicional como a posição espacial atual do coeficiente de transformação atual dentro do bloco de transformação ou forma 10 ou a última posição de scan significante L para a seleção de modelos de contexto relacionados com a codificação de coeficientes de transformação e para a derivação do parâmetro de simbolização. Note que a informação resultante da avaliação e localização espacial ou a última informação podem ser combinadas e, por isso, é possível uma ponderação específica. Depois do processo de avaliação e derivação, todos os parâmetros (índices de modelo de contexto, parâmetro de simbolização) estão disponíveis para a codificação de todo um nível de coeficiente de transformação ou um coeficiente de transformação até um limite específico.
[098] Como uma configuração exemplificativa da invenção apresentada, o tamanho do conjunto de corte está vazio. Isto quer dizer que cada coeficiente de transformação é transmitido completamente antes de processar os próximos coeficientes de transformação ao longo da ordem de scan.
[099] Os valores de avaliação f(x) podem resultar da avaliação de vizinhos já codificados xi cobertos pelo template local 56. Uma função de mapeamento específica ft(x) mapeia o vetor de entrada para um valor de avaliação usado para selecionar o modelo de contexto e o parâmetro Rice. O vetor de entrada x pode consistir de valores de coeficiente de transformação xi dos vizinhos cobertos pelo template local 56 e depende do esquema de intercalação. Por exemplo, se o conjunto de cortes c estiver vazio e o sinal estiver codificado em uma passe de scan separada, o vetor x consiste de coeficientes de transformação absolutos xi apenas. De um modo geral, os valores do vetor de entrada x podem ser assinados ou não assinados. A função de mapeamento pode ser formulada do seguinte modo com um vetor de entrada x da dimensão de d (fornecendo t como uma entrada constante).
Figure img0003
[0100] Para ser mais específico, a função de mapeamento ft(x) pode ser definida do seguinte modo com um vetor de entrada x da dimensão de d (fornecendo t como uma entrada constante).
Figure img0004
[0101] Isto é, gt(XÍ) pode ser (|xz| -1). Na última fórmula, a função δ é definida do seguinte modo (fornecendo t como uma entrada constante):
Figure img0005
[0102] Outro tipo de valor de avaliação é o número de níveis de coeficientes de transformação absolutos vizinhos maiores ou menores do que um valor específico t definido do seguinte modo:
Figure img0006
[0103] Note que para ambos os tipos de valores de avaliação, é possível que um fator de ponderação adicional controle a importância de um vizinho específico. Por exemplo, o fator de ponderação wi é superior para vizinhos com menos distância espacial do que para vizinhos para maior distância espacial. Além disso, a ponderação é negligenciada quando define todos os wi para um.
[0104] Como uma configuração exemplificativa da invenção apresentada, f0, f1, f2 e f3 são valores de avaliação com respetivo t de {0, 1, 2, 3} e δ(xi) conforme definido em (1). Para este exemplo, f0 é utilizado para a derivação do índice de contexto do primeiro bin, f1, para o segundo bin, f2 para o terceiro bin e f3 para o parâmetro Rice. Noutra configuração exemplificativa, f0 é usado para a seleção do modelo de contexto do primeiro in, enquanto f1 é considerado para a seleção do modelo de contexto do segundo, do terceiro bin e do parâmetro Rice. Aqui, o parâmetro Rice serve como um representativo também para outros parâmetros de simbolização.
[0105] A seleção do modelo de contexto para todos os elementos de sintaxe ou índices de bins na codificação entrópica e parâmetro de simbolização usa a mesma lógica ao empregar os valores de avaliação f(x). De um modo geral, um valor de avaliação específico f(x) é mapeado por outra função de mapeamento g(x,n) para um índice do modelo de contexto ou um parâmetro de simbolização. Uma função de mapeamento específica é definida do seguinte modo com d como a dimensão do vetor de entrada n.
Figure img0007
[0106] Para este mapeamento, a função seguinte modo.
Figure img0008
[0107] A dimensão d do vetor de entrada n e os valores do vetor n podem ser variáveis e dependem do elemento de sintaxe ou índice de bin. Além disso, a localização espacial dentro do bloco de transformação ou forma podem ser usadas para adicionar ou subtrair (ou para mover) o índice do modelo de contexto selecionado.
[0108] A primeira posição de scan ao analisar os coeficientes de transformação quando codificam/descodificam os mesmos, pode ser a última posição de scan L quando aplica a direção de scan da Fig. 1 a apontar do DC para a frequência mais alta. Isto é, pelo menos o primeiro scan dos scans para atravessar os coeficientes para codificar/descodificar os mesmos, podem apontar a partir do coeficiente L para DC. Para esta posição de scan L, o primeiro índice de bin pode ser negligenciado como a última informação já sinalizada em como esta posição de scan consiste de um coeficiente de transformação desigual a zero. Para esta posição de scan, o índice do modelo de contexto separado pode ser utilizado para codificar a segunda e o terceiro bin resultante da binarização do coeficiente de transformação.
[0109] Como uma configuração exemplificativa da invenção apresentada, o valor de avaliação resultante f0 é utilizado como entrada juntamente com o vetor de entrada n={1,2,3,4,5}, e o valor resultante é o índice do modelo de contexto para o primeiro bin. Note que no caso do valor de avaliação ser igual a zero, o índice de contexto é zero. O mesmo esquema é aplicado com o valor de avaliação f1 e o vetor de entrada n={1,2,3,4} e o resultante valor é o índice do modelo de contexto para o segundo e terceiro bin da binarização. Para o parâmetro Rice é utilizado f3 e n={0,5,19}. Note que o parâmetro máximo Rice é três e, por isso, a presente invenção não faz nenhuma mudança no parâmetro máximo Rice comparativamente com o estado tecnológico. Em alternativa, pode ser utilizado f1 para derivar o parâmetro Rice. Para essa configuração, o vetor de entrada deve ser modificado para n={3,9,21}. Note que o conjunto subjacente de regras é o mesmo para todos os elementos de sintaxe ou índices de bin e para o parâmetro Rice, apenas os parâmetros ou conjuntos limites (vetor de entrada n) são diferentes. Além disso, dependendo da diagonal da posição de scan atual, o índice de modelo de contexto pode ser modificado conforme afirmado antes ao adicionar ou subtrair uma quantidade específica. Uma descrição equivalente para isso é a seleção de outro conjunto de modelo de contexto não contíguo. Em uma implementação exemplificativa, o índice de modelo de contexto resultante para o primeiro bin é deslocado em 2*|ctx0| se a posição de scan atual ficar na primeira das duas diagonais. Se a posição de scan atual ficar na terceira e na quarta diagonal, o índice de modelo de contexto para o primeiro bin é deslocado em |ctx0|, em que |ctx0| é o número máximo de modelos de contexto resultante da derivação com base nos valores de avaliação resultantes em conjuntos de modelo de contexto não contíguos. Este conceito é utilizado para planos de luminância apenas para uma implementação exemplificativa, não sendo adicionado mais nenhum desvio no caso de crominância, evitando a diluição de contexto (isto é, não são codificados bins suficientes com um modelo de contexto adaptativo e a estatística não pode ser seguida pelo modelo de contexto). A mesma técnica pode ser aplicada ao índice do modelo de contexto da segunda e do terceiro bin. Aqui, em uma configuração exemplificativa da invenção apresentada, os diagonais limite são três e dez. Mais uma vez, esta técnica é aplicada ao sinal de luminância apenas. Note que também é possível estender esta técnica aos sinais de crominância. Além disso, note que o desvio do índice adicional dependente de diagonais pode ser formulado do seguinte modo.
Figure img0009
[0110] Nesta fórmula, dj denota o peso para a diagonal da posição de scan atual e idxinc denota o tamanho do passo. Além disso, note que o índice de desvio pode ser invertido para implementações práticas. Para a implementação exemplificativa declarada, uma inversão seria definir o índice adicional para zero se a posição de scan atual ficar na primeira e na segunda diagonal, é deslocada em |ctx0| para a terceira e quarta diagonal e é 2*|ctx0| caso contrário. Ao utilizar a fórmula fornecida, é conseguido o mesmo comportamento como para a configuração exemplificativa quando definir d0 e d1 para 2, d3 e d4 para 1 e todos os fatores remanescentes de diagonal para 0.
[0111] Mesmo se o índice de modelo de contexto for igual para diferentes tamanhos de blocos ou tipos de planos (p. ex. luminância e crominância), o índice de modelo de contexto base pode ser diferente resultante em diferentes conjuntos de modelos de contexto. Por exemplo, pode ser utilizado o mesmo índice base para tamanhos de blocos superiores a 8x8 em luminância, enquanto o índice base pode ser diferente para 4x4 e 8x8 em luminância. Para ter um número significativo de modelos de contexto, o índice base pode, porém, ser agrupado de um modo diferente.
[0112] Como uma configuração exemplificativa, os modelos de contexto para 4x4 blocos e os blocos remanescentes podem ser diferentes em luminância, enquanto o mesmo índice base pode ser usado para o sinal de crominância. Noutro exemplo, o mesmo índice base pode ser usado tanto para sinais de luminância e crominância, enquanto os modelos de contexto para luminância e crominância são diferentes. Além disso, os modelos de contexto para a segunda e o terceiro bin podem ser agrupados, resultando em um número menor da memória de contexto. Se a derivação do índice do modelo de contexto para o segundo e terceiro bin for igual, pode ser utilizado o mesmo modelo de contexto para transmitir o segundo e terceiro bin. Através de uma combinação correta de agrupamento e ponderação do índice base, pode ser conseguido um número significativo de modelos de contexto, resultando em uma poupança da memória de contexto.
[0113] Em uma versão privilegiada da invenção apresentada, o conjunto de cortes c está vazio. Isto é, só pode ser utilizado um scan. Para esta versão privilegiada, a informação de sinal pode ser intercalada, utilizando a mesma passe de scan, ou pode ser codificada em um passe de scan à parte. Noutra versão privilegiada, o tamanho do conjunto c é igual a um e c0, o primeiro e o único valor do conjunto de cortes c é igual a três. Isto corresponde ao exemplo ilustrado acima, usando dois scans. Nesta versão privilegiada, a seleção do modelo de contexto pode ser feita para todos os três bins resultantes da binarização unária truncada, enquanto a derivação do parâmetro de simbolização, como a seleção do parâmetro Rice, pode ser feita usando a mesma função 52.
[0114] Em uma versão privilegiada, o tamanho do template local é cinco. O tamanho do template local pode ser quatro. Para esta versão privilegiada, o vizinho com a distância espacial de dois na direção vertical pode ser removida comparativamente com a Fig. 8. Noutra versão privilegiada, o tamanho do template é adaptativo e é ajustado à ordem de scan. Para esta versão privilegiada, o vizinho, que é codificado em um passo de processamento antes, não está incluído no template, como é o caso nas Fig. 1 e 8. Ao fazê-lo, a dependência ou latência é encurtada, resultando em uma ordem de processamento superior. Noutra versão privilegiada, o tamanho e a forma do template são ajustados de modo suficientemente amplo (p. ex. o mesmo tamanho ou forma de bloco do bloco atual ou forma). Noutra versão privilegiada, podem ser utilizados dois templates locais, que podem ser combinados por um fator de ponderação. Para esta versão privilegiada, os templates locais podem diferir em tamanho e forma.
[0115] Em uma versão privilegiada, f0 pode ser usado para selecionar o índice do modelo de contexto para o primeiro bin e f1 para o segundo bin, o terceiro bin e o parâmetro Rice. Nesta versão privilegiada, o vetor de entrada n={0,1,2,3,4,5} resultante em 6 modelos de contexto. O vetor de entrada n para o segundo e terceiro índice de bin pode ser o mesmo e n={0,1,2,3,4}, enquanto o vetor de entrada n para o parâmetro Rice pode ser n={3,9,21}. Além disso, em uma versão privilegiada, as porções de frequência anteriormente mencionadas do bloco de transformação, dentro das quais são usados conjuntos de contexto separados, podem ser formadas por conjuntos não contíguos de diagonais (ou linhas) da (análise) de scan da diagonal. Por exemplo, podem existir diferentes números de desvio base de contexto para a primeira e a segunda diagonal, a segunda e a terceira diagonal e a quarta e a quinta diagonal quando visto a partir do componente DC, de modo a que a seleção de contexto para coeficientes nestas diagonais se realiza dentro de conjuntos não contíguos de contextos. Note que a primeira diagonal é um. Para o segundo e o terceiro índice de bin, as diagonais que ficam na faixa entre [0,2] têm um fator de ponderação de dois e as diagonais que ficam na faixa entre [3,9] têm um fator de ponderação de um. Estes desvios adicionais são usados no caso de um sinal de luminância, enquanto os fatores de ponderação para a crominância são todos iguais a zero. Também para esta versão privilegiada, o modelo de contexto para o segundo e o terceiro índice de bin da primeira posição de scan, que é a última posição de scan significante, está separado dos modelos de contexto remanescentes. Isto quer dizer que o processo de avaliação nunca pode selecionar este modelo de contexto separado.
[0116] Em uma versão privilegiada, os blocos ou formas de luminância 4x4 usam um conjunto único de contexto para o primeiro bin, enquanto os modelos de contexto para os tamanhos ou formas dos blocos remanescentes são os mesmos. Nesta versão privilegiada, não existe separação entre o tamanho ou forma do bloco para o sinal de crominância. Noutra versão privilegiada da invenção, não existe separação entre os resultados dos tamanhos ou formas dos blocos no mesmo índice base ou conjuntos de modelos de contexto para todos os tamanhos e forma de blocos. Note que para ambas as versões privilegiadas, são utilizados diferentes conjuntos de modelos de contexto para sinais de luminância e de crominância.
[0117] Abaixo é apresentada uma versão que usa uma binarização de parâmetro Rice modificada de acordo com as versões acima, mas sem a codificação entrópica adaptativa de contexto. De acordo com este esquema de codificação alternativo, é utilizado somente o esquema de binarização Rice (com, opcionalmente, a adição de um sufixo Exp-Golomb). Por conseguinte, não é exigido nenhum modelo adaptativo de contexto para codificar um coeficiente de transformação. Para esse esquema de codificação alternativo, a derivação de parâmetro Rice usa a mesma regra das versões acima.
[0118] Por outras palavras, para reduzir a complexidade e a memória de contexto e para melhorar a latência no encadeamento de codificação, é descrito um esquema de codificação alternativo baseado no mesmo conjunto de regras ou lógica. Para este esquema de codificação alternativo, a seleção do modelo de contexto para os três primeiros bins resultantes da binarização é desativada e os três primeiros bins resultantes da binarização Unária Truncada, isto é, o primeiro esquema de simbolização, pode ser codificada com a probabilidade igual fixa (isto é, com uma probabilidade de 0,5). Em alternativa, o esquema de binarização Unária Truncada é omitido e os limites do intervalo do esquema de binarização são ajustados. Nesta prática, o limite esquerdo do intervalo Rice, isto é, intervalo 18, é 0 em vez de 3 (com intervalo 16 a desaparecer). O limite direito/superior para esta prática pode ser inalterado ou pode ser subtraído por 3. A derivação do parâmetro Rice pode ser modificado em termos de valores de avaliação e em termos do vetor de entrada n.
[0119] Por conseguinte, de acordo com as versões modificadas acima delineadas, um aparelho para descodificar uma série de coeficientes de transformação de diferentes blocos de transformação, cada um possuindo um nível de coeficiente de transformação, a partir do fluxo de dados 32, pode ser construído e operado conforme ilustrado e descrito relativamente à Fig. 10.
[0120] O aparelho da Fig. 10, compreende um extrator 120 configurado para extrair um conjunto de símbolos ou sequência de símbolos 122 a partir do fluxo de dados 32 para um coeficiente de transformação atual. A extração é realizada conforme descrito acima relativamente ao extrator 84 da Fig. 7.
[0121] Um dessimbolizador 124 configurado para mapear o conjunto 122 de símbolos para um nível de coeficiente de transformação para o coeficiente de transformação atual de acordo com um esquema de simbolização que é parametrizável de acordo com um parâmetro de simbolização. O mapeamento pode unicamente usar o esquema de simbolização parametrizável, como uma binarização Rice, ou pode usar este esquema de simbolização parametrizável meramente como um prefixo ou sufixo de uma simbolização geral do coeficiente de transformação atual. No caso da Fig. 2, por exemplo, o esquema de simbolização parametrizável, isto é, o segundo, formou o sufixo relativamente à sequência de símbolos do primeiro esquema de simbolização.
[0122] Para apresentar mais exemplos, é feita referência às Fig. 11a e b. De acordo com a Fig. 11a, a faixa de intervalo 20 dos coeficientes de transformação é subdividida em três intervalos 16, 18 e 126, cobrindo em conjunto a faixa de intervalo 20 e sobrepondo-se reciprocamente em um respetivo nível máximo do respetivo intervalo inferior. Se o nível de coeficiente x estiver dentro do intervalo mais alto 126, a simbolização geral é uma combinação de sequência de símbolos 44 do primeiro esquema de simbolização 128 que simbolizam níveis dentro do intervalo 16, formando a sequência de símbolos um prefixo, seguido por um primeiro sufixo, nomeadamente uma sequência de símbolos 42 do segundo esquema de simbolização 130 simbolizando níveis dentro do intervalo 18, e ainda seguido por um segundo sufixo, nomeadamente uma sequência de símbolos 132 de um terceiro esquema de simbolização 134 simbolizando níveis dentro do intervalo 126. O último pode ser um código Exp-Golomb, como de uma ordem 0. Se o nível de coeficiente x estiver dentro do intervalo médio 18 (mas não dentro do intervalo 126), a simbolização geral é uma combinação meramente de prefixo 44 seguido pelo primeiro sufixo 42. Se o nível de coeficiente x estiver dentro do intervalo mais baixo 16 (mas não dentro do intervalo 18), a simbolização geral é meramente composta pelo prefixo 44. A simbolização geral é composta de modo a que a mesma é livre de prefixos. Sem a terceira simbolização, a simbolização de acordo com a Fig. 11a pode corresponder a uma da Fig. 2. O terceiro esquema de simbolização 134 pode ser uma binarização Golomb-Rice. O segundo esquema de simbolização 130 pode formar um parametrizável, apesar de o mesmo poder ser também o primeiro 128.
[0123] É apresentada uma simbolização geral alternativa na Fig. 1. Aqui são meramente combinados dois esquemas de simbolização. Comparativamente com a Fig. 11a, o primeiro esquema de simbolização foi deixado fora. Dependendo do x dentro do intervalo 136 do esquema 134, ou do intervalo 138 do esquema 130 (fora do intervalo 136), a simbolização de x compreende prefixo 140 e sufixo 142, ou meramente prefixo 140.
[0124] Além disso, o aparelho da Fig. 10 compreende um determinador de parâmetro de simbolização 144 ligado entre a saída do dessimbolizador e uma entrada de parâmetro do dessimbolizador 124. O determinador 144 está configurado para determinar o parâmetro de simbolização 46 para o coeficiente de transformação atual dependente, através da função 52, dos coeficientes de transformação previamente processados (desde que deriváveis dos fragmentos dessimbolizados ou porções dessimbolizadas/processadas/ descodificadas até agora).
[0125] O extrator 120, o dessimbolizador 124 e o determinador de parâmetro de simbolização 144 estão configurados para sequencialmente processarem os coeficientes de transformação dos diferentes blocos de transformação como foi descrito acima. Isto é, o scan 140 pode ser atravessado na direção oposta dentro de um bloco de transformação 10. Podem ser utilizados vários scans, como, por exemplo, para os diferentes fragmentos de simbolização, isto é, prefixo e sufixo(s).
[0126] O parâmetro de função varia dependendo de um tamanho do bloco de transformação do coeficiente de transformação atual, um tipo de componente de informação do bloco de transformação do coeficiente de transformação atual e/ou uma porção de frequência do coeficiente de transformação atual estão localizados dentro do bloco de transformação.
[0127] O aparelho pode estar configurado de modo a que a função que define a relação entre os coeficientes de transformação previamente descodificados, por um lado, e o parâmetro de simbolização, por outro lado, seja g(f (x)) , cuja função já foi descrita acima.
[0128] Tal como também já foi discutido acima, pode ser utilizada a determinação espacial dos coeficientes de transformação previamente processados dependendo da disposição relativa espacial relativamente ao coeficiente de transformação.
[0129] O aparelho pode operar com muita facilidade e rapidez, uma vez que o extrator 120 pode estar configurado para extrair o conjunto de símbolos a partir do fluxo de dados diretamente ou usando a descodificação entrópica que usa uma distribuição de probabilidade fixa. O esquema de simbolização parametrizável pode ser tal que o conjunto de símbolos é de um código Rice, e o parâmetro de simbolização é um parâmetro RICE.
[0130] Por outras palavras, o dessimbolizador 124 pode estar configurado para restringir o esquema de simbolização a um intervalo de nível como 18 ou 138 fora do intervalo da faixa 20 dos coeficientes de transformação, de modo a que o conjunto de símbolos represente um prefixo ou sufixo relativamente a outras porções de uma simbolização geral do coeficiente de transformação atual como 44 e 132 ou 142. Quanto aos outros símbolos, pode ser também extraído o mesmo a partir do fluxo de dados diretamente ou usando a descodificação entrópica que usa uma distribuição de probabilidade fixa, mas as Fig. 1 até 9 mostraram que a codificação entrópica que usa a adaptatividade do contexto também pode ser utilizada.
[0131] O aparelho da Fig. 10 pode ser usado como aparelho 102 no descodificador de imagem 102 da Fig. 8.
[0132] Para ficar completo, a Fig. 12 mostra um aparelho para codificar uma série de coeficientes de transformação de diferentes blocos de transformação, possuindo, cada um, um nível de coeficiente de transformação, para um fluxo de dados 32, adaptado ao aparelho da Fig. 10.
[0133] O aparelho da Fig. 12 compreende um simbolizador 150 configurado para mapear um nível de coeficiente de transformação para o coeficiente de transformação atual de acordo com um esquema de simbolização que é parametrizável de acordo com um parâmetro de simbolização, para um conjunto de símbolos ou sequência de símbolos.
[0134] Um insersor 154 configurado para inserir o conjunto de símbolos para o coeficiente de transformação atual para dentro do fluxo de dados 32.
[0135] Um determinador de parâmetro de simbolização 156 está configurado para determinar o parâmetro de simbolização 46 para o coeficiente de transformação atual dependendo, através de uma função 52 parametrizável através de um parâmetro de função, dos coeficientes de transformação previamente processados, e pode, para este fim, ser ligado entre uma saída do insersor 152 e entrada de parâmetro do simbolizador 150, ou, em alternativa, entre a saída e a entrada do simbolizador 150.
[0136] Insersor 154, simbolizador 150 e determinador do parâmetro de simbolização 156 podem estar configurados para sequencialmente processarem os coeficientes de transformação dos diferentes blocos de transformação, em que o parâmetro de função varia dependendo de um tamanho do bloco de transformação do coeficiente de transformação atual, um tipo de componente de informação do bloco de transformação do coeficiente de transformação atual e/ou uma porção de frequência do coeficiente de transformação atual estão localizados dentro do bloco de transformação.
[0137] Tal como afirmado acima relativamente ao aparelho de descodificação da Fig. 10, o aparelho da Fig. 12 pode estar configurado, de modo a que a função que define a relação entre os coeficientes de transformação previamente descodificados, por um lado, e o parâmetro de simbolização, por outro lado, seja g(f (x)), e os coeficientes de transformação previamente processados podem ser espacialmente determinados dependendo de uma disposição relativa espacial relativamente ao coeficiente de transformação atual.
[0138] O insersor pode estar configurado para inserir o conjunto de símbolos no fluxo de dados diretamente ou usando a codificação entrópica que usa uma distribuição de probabilidade fixa, e o esquema de simbolização pode ser tal que o conjunto de símbolos é um código Rice, e o parâmetro de simbolização é um parâmetro RICE. O simbolizador pode estar configurado para restringir o esquema de simbolização para um intervalo de nível fora de um intervalo de faixa 20 dos coeficientes de transformação, de modo a que o conjunto de símbolos represente um prefixo ou sufixo relativamente a outras porções de uma simbolização geral do coeficiente de transformação atual.
[0139] Tal como mencionado acima, em uma implementação privilegiada das versões das Fig. 1o até 12, a seleção do modelo de contexto para os primeiros três bins está desativada comparativamente com as versões das Fig. 1 até 9. Para esta versão privilegiada, os bins resultantes da binarização Unária Truncada 128 são codificados com uma probabilidade fixa de 0,5. Noutra versão privilegiada, a binarização Unária Truncada 128 é omitida, como se pode ver na Fig. 11b, e os limites para o intervalo Rice são ajustados, resultando na mesma faixa de intervalo como no estado tecnológico anterior (isto é, limites esquerdo e direito menos 3). Para esta versão privilegiada, a regra de derivação do parâmetro Rice está modificada comparativamente com a versão das Fig. 1 até 9. Em veze de usar f1 como valor de avaliação, pode usar f0 , por exemplo. Além disso, o vetor de entrada deve ser ajustado para n={4,10,22}.
[0140] Outra versão aqui descrita ilustra a possibilidade de virtualmente ter diferentes templates para a seleção/dependência de contexto, por um lado, e a determinação do parâmetro de simbolização, por outro lado. Isto é, o template de coeficientes xi permanece o mesmo, tanto para a seleção/dependência de contexto como para a determinação do parâmetro de simbolização, mas os coeficientes xi que participam na influência f(x) ficam efetivamente diferentes entre a seleção/dependência de contexto e a determinação do parâmetro de simbolização através da definição apropriada wi: todos os coeficientes xi, para os quais os pesos wi são zero, não influenciam f(x) correspondentemente, concebendo as porções do template, em que wi é zero, de modo diferente entre a seleção/dependência de contexto, por um lado, e a determinação do parâmetro de simbolização, por outro lado, resultando efetivamente em diferentes “templates efetivos” para a seleção/dependência de contexto e a determinação do parâmetro de simbolização. Por outras palavras, ao definir alguns wi para zero para certas posições template i para uma das seleções/dependências de contexto e a determinação do parâmetro de simbolização, enquanto define wi nestas certas posições template i para valores que não zero para a outra seleção/dependência de contexto e a determinação do parâmetro de simbolização, o template da primeira seleção/dependência de contexto mencionada e determinação do parâmetro de simbolização é efetivamente mais pequeno do que o template da última seleção/dependência de contexto e determinação do parâmetro de simbolização. Mais uma vez, tal como já foi denotado acima, o template pode abranger todos os coeficientes de transformação do bloco, irrespectivamente da posição do coeficiente de transformação atualmente codificado, por exemplo.
[0141] Ver, por exemplo, a Fig. 13 que mostra um bloco de coeficiente de transformação 10, que consiste a título exemplificativo de uma rede de coeficientes de transformação de 16x16 12. O bloco de coeficiente de transformação 10 está subdividido em sub-blocos 200 de coeficientes de transformação de 4x4 12, cada. Os sub-blocos 200 estão, por isso, dispostos regularmente em uma rede de 4x4. De acordo com a presente versão, para codificar o bloco de coeficiente de transformação 10, é codificado um mapa de significância dentro do fluxo de dados 32, em que o mapa de significância indica posições de níveis significativos de coeficientes de transformação 12, isto é, níveis de coeficientes de transformação diferentes de 0. De seguida, os níveis de coeficientes de transformação menos um destes coeficientes de transformação significantes podem ser codificados dentro do fluxo de dados. A codificação dos últimos níveis de coeficientes de pode ser feita como descrito acima, nomeadamente por uma codificação entrópica adaptativa de contexto combinada com um esquema de codificação de comprimento variável, que usa a função parametrizável comum para selecionar o contexto e determinar o parâmetro de simbolização. Pode ser utilizada uma certa ordem de scan para pôr em série ou ordenar os coeficientes de transformação significantes. Um exemplo de uma ordem de scan dessas está ilustrada na Fig. 13: os sub-blocos 200 são analisados a partir da frequência mais alta (inferior direito) para DC (superior esquerdo), e dentro de cada sub-bloco 200 são analisados os coeficientes de transformação 12 antes de os coeficientes de transformação do próximo sub-bloco serem visitados por ordem de sub-bloco. Isto é ilustrado por setas 202 que indicam o scan de sub-bloco 204 e ilustra uma porção do atual scan de coeficiente. Pode ser transmitido um índice de scan dentro do fluxo de dados 32, de modo a permitir selecionar de entre vários caminhos de scan para analisar os sub-blocos 200 e/ou coeficientes de transformação 12 dentro dos sub-blocos, respectivamente. Na Fig. 13 é ilustrado um scan de diagonal tanto para o scan de sub-bloco 202 como para o scan dos coeficientes de transformação 12 dentro de cada sub-bloco. De acordo com isto, o mapa de significância seria descodificado no descodificador, e os níveis de coeficientes de transformação dos significantes coeficientes de transformação seriam descodificados usando a ordem de scan recentemente mencionada e usando as versões acima que exploram a função parametrizável. Na descrição delineada em mais detalhe abaixo, xS e yS denotam a coluna de sub-bloco e a fila de sub-bloco medidas a partir da posição DC em diante, isto é, o canto superior esquerdo do bloco 10, dentro do qual está posicionado um coeficiente de transformação atualmente codificado/descodificado. xP e yP denotam a posição do coeficiente de transformação atualmente codificado/descodificado medida desde o canto superior esquerdo (posição de coeficiente DC) do sub- bloco atual (xS, yS). Isto é ilustrado na Fig. 13 para o sub-bloco superior direito 200. xC e yC denotam a posição do coeficiente de transformação de atualmente descodificado/codificado medida nos coeficientes de transformação a partir da posição DC em diante. Além disso, como o tamanho do bloco para o bloco 10 na Fig. 13, nomeadamente 16x16, foi escolhido meramente para efeitos de ilustração, a versão mais abaixo delineada em mais pormenor usa log2TransfTamanho como um parâmetro que denota o tamanho do bloco 10, que é presumido ser ao quadrado. log2TransfTamanho indica o logaritmo que é o dobro do número dos coeficientes de transformação dentro de cada fila dos coeficientes de transformação do bloco 10, isto é, log2 do comprimento dos cantos do bloco 10 medido em coeficientes de transformação. CtxIdxInc finalmente seleciona o contexto. Além disso, na versão específica abaixo delineada, é assumido que os sinais de mapear anteriormente mencionados codificado_sub_bloco_bandeira, isto é, um elemento ou bandeira de sintaxe binária, para os sub-blocos 200 do bloco 10 para sinalizar, sub-bloco a sub- bloco, se dentro do respetivo sub-bloco 200 existe ou não algum coeficiente de transformação significante, isto é, se coeficientes de transformação meramente insignificantes estão localizados dentro do respetivo sub-bloco 200. Se a bandeira é zero, os coeficientes de transformação meramente insignificantes encontram-se dentro do respetivo sub-bloco.
[0142] Por conseguinte, de acordo com esta versão, é realizado o seguinte pelo descodificador/codificador entrópico adaptativo de contexto para selecionar o contexto de significante_coef_bandeira, isto é, uma bandeira que faz parte do mapa de significância e sinaliza para um certo coeficiente de transformação de um sub-bloco, para o qual codificado_sub_bloco_bandeira sinaliza que o respetivo sub-bloco 200 contém coeficientes de transformação que não zero, se o respetivo coeficiente é significante, isto é, não zero, ou não.
[0143] As entradas para este processo são o índice do componente de cor cIdx, a posição de scan de coeficiente atual ( xC, yC ), o índice da ordem de scan scanIdx, o tamanho do bloco de transformação log2TransfTamanho.
[0144] A saída deste processo é ctxIdxInc.
[0145] A variável sigCtx depende da posição atual ( xC, yC ), do índice do componente de cor cIdx, o tamanho do bloco de transformação e os bins previamente descodificados do elemento de sintaxe codificado_sub_bloco_bandeira. Para a derivação de sigCtx, aplica-se o seguinte:
[0146] - Se log2TransfTamanho é igual a 2, sigCtx é derivado usando ctxIdxMap[ ] especificado na tabela 1 do seguinte modo: sigCtx = ctxIdxMap[ (yC << 2) + xC ]
[0147] - Caso contrário, se xC + yC é igual a 0, sigCtx é derivado do seguinte modo: sigCtx = 0
[0148] - Caso contrário, sigCtx é derivado usado valores prévios do codificado_sub_bloco_bandeira do seguinte modo: - As posições do sub-bloco horizontal e vertical xS e yS são definidas iguais para (xC >> 2) e (yC >> 2), respetivamente. - A variável prevCsbf é definida igual para 0. - Quando xS é inferior a ( 1 << ( log2TransfTamanho - 2 ) ) - 1, aplica-se o seguinte: prevCsbf += codificado_sub_bloco_bandeira[ xS + 1 ][ yS ] - Quando yS é inferior a ( 1 << ( log2TransfTamanho - 2 ) ) - 1, aplica-se o seguinte: prevCsbf += ( codificado_sub_bloco_bandeira[ xS ][ yS + 1 ] << 1) - As posições interiores do sub-bloco xP e yP são definidas iguais para (xC & 3) e (yC & 3), respetivamente. - A variável sigCtx é derivado do seguinte modo: - Se prevCsbf for igual a 0, aplica-se o seguinte: sigCtx = ( xP + yP = = 0 ) ? 2 : ( xP + yP < 3 ) ? 1: 0 - Caso contrário, se prevCsbf forigual a 1, aplica-se o seguinte: sigCtx = ( yP = = 0 ) ? 2 : ( yP = = 1 ) ? 1: 0 - Caso contrário, se prevCsbf for igual a 2, aplica-se o seguinte: sigCtx = ( xP = = 0 ) ? 2 : ( xP = = 1 ) ? 1: 0 - Caso contrário (prevCsbf é igual a 3) aplica-se o seguinte. sigCtx = 2 - A variável sigCtx é modificada do seguinte modo: - Se cldx for igual a 0, aplica-se o seguinte: - Quando ( xS + yS ) é superior a 0, aplica-se o seguinte. sigCtx += 3 - A variável sigCtx é modificada do seguinte modo: - Se log2TransfTamanho for igual a 3, aplica-se o seguinte: sigCtx += ( scanIdx = = 0 ) ? 9 : 15 - Caso contrário, aplica-se o seguinte: sigCtx += 21 - Caso contrário (cIdx é maior do que 0), aplica-se o seguinte: - Se log2TransfTamanho for igual a 3, aplica-se o seguinte. sigCtx += 9 - Caso contrário, aplica-se o seguinte. sigCtx += 12
[0149] O incremento de índice de contexto ctxIdxInc é derivado usando o índice de componente de cor cIdx e sigCtx do seguinte modo: - Se cIdx for igual a 0, ctxIdxInc é derivado do seguinte modo. ctxIdxInc = sigCtx - Caso contrário (cIdx é maior do que 0), ctxIdxInc é derivado do seguinte modo: ctxIdxInc = 27 + sigCtx
[0150] Tabela 1 - Especificação de ctxIdxMap[ i ]
Figure img0010
[0151] Tal como acima descrito, para cada coeficiente de transformação significante, podem ser transportados outros elementos de sintaxe ou conjuntos de símbolos dentro do fluxo de dados para sinalizar os seus níveis. De acordo com a versão delineada abaixo, para um coeficiente de transformação significante são transmitidos os seguintes elementos de sintaxe ou conjuntos de coeficientes de transformação: coef_dis_nível_maior1_bandeira, coef_dis_nível_maior2_bandeira (opcional), e coef_dis_nível_remanescente, de modo a que o nível do nível de coeficiente de transformação significante atualmente codificado/descodificado TransCoefNível seja:
[0152] TransCoefNível = (coef_dis_nível_remanescente + baseNível ) * ( 1 - 2 * coef_sin_bandeira]) Com baseNível = 1 + coef_dis_nível_maior1_bandeira + coef_dis_nível_maior2_bandeira
[0153] Por favor, note que significante_coef_bandeira é, por definição, 1 para significantes coeficientes de transformação, e correspondentemente, pode ser considerado como parte da codificação do coeficiente de transformação, nomeadamente parte dos seus símbolos codificados entrópicos.
[0154] O codificador/descodificador entrópico adaptativo de contexto iria, por exemplo, executar a seleção de contexto para coef_dis_nível_maior1_bandeira do seguinte modo. Por exemplo, o índice de scan de sub-bloco atual iria aumentar ao longo do caminho de scan 202 na direção do DC, e o índice de scan do coeficiente atual n iria aumentar dentro do respetivo sub-bloco, dentro do qual se encontra a posição do coeficiente de transformação atualmente codificado/descodificado, ao longo do caminho de scan 204, em que, conforme delineado acima, existem diferentes possibilidades para os caminhos de scan 202 e 204, e o mesmo pode ser atualmente variável de acordo com um índice scanIdx.
[0155] As entradas para este processo de selecionar o contexto de coef_dis_nível_maior1_bandeira são o índice do componente de cor cIdx, o índice de scan do sub-bloco atual i e o índice de scan do coeficiente atual n dentro do sub-bloco atual.
[0156] A saída deste processo é ctxIdxInc.
[0157] A variável ctxDefinido especifica o conjunto de contexto atual e aplica-se o seguinte para a sua derivação.
[0158] - Se o processo for invocado pela primeira vez para o índice de scan de sub-bloco atual i, aplica-se o seguinte: - A variável ctxDefinido é inicializada do seguinte modo. - Se o índice de scan de sub-bloco atual i for igual a 0 ou cIdx for superior a 0, aplica-se o seguinte: ctxSet = 0 - Caso contrário (i é superior a 0 e cIdx é igual a 0), aplica-se o seguinte: ctxSet = 2 - A variável últimoSuperior1Ctx é derivado do seguinte modo. - Se o sub-bloco atual com índice de scan i for o primeiro a ser processado nesta subcláusula para o bloco de transformação atual, a variável últimoSuperior1Ctx é definida para igual a 1. - Caso contrário, a variável últimoSuperior1Ctx é definida para igual ao valor de superioe1Ctx que foi derivado durante a última invocação do processo especificado nesta subcláusula para o elemento de sintaxe coef_dis_nível_superior1_bandeira para o anterior sub-bloco com índice de scan i + 1. - Quando últimoSuperior1Ctx é igual a 0, ctxDefinido é incrementado em um do seguinte modo. ctxDefinido = ctxDefinido + 1 - A variável superior1Ctx é definida para igual a 1.
[0159] - Caso contrário (este processo não é invocado pela primeira vez para o índice de scan de sub-bloco atual i), aplica-se o seguinte. - A variável ctxDefinido é definida para igual à variável ctxDefinido que foi derivada durante a última invocação do processo especificado nesta subcláusula. - A variável superior1Ctx é definida para igual à variável superior1Ctx que foi derivada durante a última invocação do processo especificado nesta subcláusula. - Quando superior1Ctx é maior do que 0, a variável últimaSuperior1Banderia é definida igual para o elemento de sintaxe coef_dis_nível_superior1_bandeira que foi utilizado durante a última invocação do processo especificado nesta subcláusula e superior1Ctx é modificado do seguinte modo. - Se últimoSuperior1Bandeira for igual a 1, superior1Ctx é definido igual a 0. - Caso contrário (últimoSuperior1Bandeira é igual a 0), superior1Ctx é incrementado em 1.
[0160] O incremento de índice de contexto ctxIdxInc é derivado usando o conjunto de contexto atual ctxSet e o contexto atual superior1Ctx do seguinte modo. ctxIdxInc = ( ctxSet * 4 ) + Min( 3, superior1Ctx )
[0161] Quando cIdx é maior do que 0, ctxIdxInc é modificado do seguinte modo. ctxIdxInc = ctxIdxInc + 16
[0162] O processo de selecionar o contexto de coef_dis_nível_superior2_bandeira podia ser feito igual a coef_dis_nível_superior2_bandeira com a seguinte diferença:
[0163] O incremento de índice de contexto ctxIdxInc é definido igual à variável ctxSet do seguinte modo. ctxIdxInc = ctxDefinido
[0164] Quando cIdx é maior do que 0, ctxIdxInc é modificado do seguinte modo. ctxIdxInc = ctxIdxInc + 4
[0165] Para a seleção do parâmetro de simbolização, o que se segue seria executado pelo determinador do parâmetro de simbolização para determinar o parâmetro de simbolização que, aqui, compreende cÚltimoDisNível e cÚltimoRiceParâm.
[0166] A entrada para o processo é um pedido para uma binarização para o elemento de sintaxe coef_dis_nível_remanescente[ n ], e baseNível.
[0167] A saída deste processo é a binarização do elemento de sintaxe.
[0168] As variáveis cÚltimoDisNível e cÚltimoRiceParâm são derivadas do seguinte modo: - Se n for igual a 15, cÚltimoDisNível e cÚltimoRiceParâm são definidos igual a 0. - Caso contrário (n é inferior a 15), cÚltimoDisNível é definido igual a baseNível + coef_dis_nível_remanescente[ n + 1 ] e cÚltimoRiceParâm é definido igual ao valor de cRiceParâm que foi derivado durante a invocação do processo de binarização conforme especificado nesta subcláusula para o elemento de sintaxe coef_dis_nível_remanescente[ n + 1 ] do mesmo bloco de transformação.
[0169] A variável cRiceParâm é derivada de cÚltimoDisNível e cÚltimoRiceParâm como: - RiceParâm = Min( cÚltimoRiceParâm + ( cÚltimoDisNível > (3 * ( 1 << cÚltimoRiceParâm ) ) ? 1 : 0 ), 4 )
[0170] A variável cTRMax é derivada de cRiceParâm como: cTRMax = 4 << cRiceParâm
[0171] A binarização de coef_dis_nível_remanescente pode consistir de uma parte de prefixo e (quando presente) uma parte de sufixo.
[0172] A parte do prefixo da binarização é derivada invocando, por exemplo, o processo de binarização Rice para a parte de prefixo Min( cTRMax, coef_dis_nível_remanescente[ n ] ).
[0173] Quando a cadeia de bin de prefixo é igual à cadeia de bites do comprimento 4, por exemplo, com todos os bites iguais a 1, a cadeia de bins pode consistir de uma cadeia de bin de prefixo e uma cadeia de bin de sufixo. A cadeia de bin de sufixo pode ser derivada usando uma binarização de ordem k Exp Golomb para a parte do sufixo (coef_dis_nível_remanescente [ n ] - cTRMax ) com a ordem k Exp-Golomb definida igual a cRiceParâm + 1, por exemplo.
[0174] Note-se que as versões acima mencionadas podem ser variadas. Por exemplo, a dependência do índice do componente de cor cIdx pode ser deixado fora. Seria considerado, por exemplo, meramente um componente de cor. Além disso, todos os valores explícitos podiam ser variados. Neste sentido, os exemplos delineados devem ser interpretados de modo abrangente para incorporar também variações.
[0175] No exemplo acima, as versões delineadas acima podem vantajosamente ser utilizadas do seguinte modo. Em particular, a determinação de CtxIdxInc para coef_dis_nível_superior1_bandeira, por um lado, e a determinação do parâmetro de simbolização para coef_dis_nível_ remanescente é harmonizada explorando as funções acima f e g, definindo os parâmetros de função do seguinte modo.
[0176] Com esta finalidade, a Fig. 16 mostra, a título de exemplo, um “coeficiente de transformação atual” ilustrado com um a cruz 206. O mesmo é representativo para qualquer coeficiente de transformação, com o qual qualquer um dos elementos de sintaxe subsequentemente mencionado está associado. É posicionado em (xP,yP)=(1,1) e (xC,yC)=(1,5) dentro do sub- bloco atual (xS,yS)=(0,1). O sub-bloco vizinho direito está em (xS,yS)=(1,1), o sub-bloco vizinho inferior está em (xS,yS)=(0,2) e o sub-bloco imediatamente antes codificado depende do caminho de scan 202. Aqui, a título de exemplo, é apresentado um scan diagonal 202 e o sub-bloco codificado/descodificado imediatamente antes do sub-bloco atual está em (xS,yS)=(1,0).
[0177] Vamos, novamente, reescrever as fórmulas para a função parametrizável comum
Figure img0011
[0178] Para selecionar o contexto de significante_coef_bandeira para o coeficiente atual 206, podia ser computado o seguinte pelo aparelho de codificação/descodificação entrópica Isto é, o mesmo usaria a função (1) com (2) tendo os parâmetros de função t, h e w definidos do seguinte modo:
[0179] Para a função (2), wt = 1 para todos xt dentro dos sub-blocos vizinhos para a direita e para baixo de, o sub-bloco atual, e wi=0 noutro lugar no bloco 10; h(xi) = 1 para todos xt dentro do sub-bloco vizinho para a direita do sub-bloco atual; se presente, o mesmo foi previamente analisado no scan do sub-bloco 202; no caso de mais de um scan 202 estar disponível, todos podem ser de modo a a que, independentemente de scanIdx, o sub-bloco vizinho para a direita tem os seus coeficientes codificados/descodificados antes do sub- bloco atual; h(xt) = 24 + 1 para todos xt dentro do sub-bloco vizinho abaixo do sub-bloco atual previamente analisado no scan do sub-bloco (independentemente de scanIdx); h(xt) = 0 caso contrário; t = 1;
[0180] Se o valor de f for iguala 0, este sinaliza o caso de que nenhum dos sub-blocos vizinhos para a direita e para baixo do sub-bloco atual Nachbarn compreende qualquer coeficiente de transformação significante;
[0181] Se o valor de f estiver entre 1 e 16, ambos inclusivamente, isto corresponde ao fato de codificado_sub_bloco_bandeira ser igual a 1 no sub- bloco direito vizinho
[0182] Se o valor de f for um múltiplo de 24 + 1 (sem lembrete), Isto corresponde ao fato de codificado_sub_bloco_bandeira ser igual a 1 no sub- bloco inferior vizinho
[0183] Se o valor de f for um múltiplo de 24 + 1 , mas com lembrete, isto quer dizer que codificado_sub_bloco_bandeira é igual a 1 para ambos os sub- blocos vizinhos, nomeadamente aquele à direita do, e aquele abaixo do, sub- bloco atual;
[0184] Para a função (1), n é definido do seguinte modo com df sendo 3: n = (0,24, m)
Figure img0012
[0185] Através desta medida, a variável componente do índice de contexto é determinada usado g(f) com os parâmetros de função acima com base em coeficientes já codificados/descodificados.
[0186] Para selecionar o contexto de coef_dis_superior1_bandeira, podia ser computado o seguinte pelo aparelho de codificação/descodificação entrópica. Isto é, o mesmo usaria a função (1) com (2) tendo os parâmetros de função definidos do seguinte modo:
[0187] Para a função (2), os parâmetros são definidos do seguinte modo: WÍ = 1 é definido para todos xt no sub-bloco imediatamente precedente e o sub-bloco atual, e zero para todos os outros. h(xí) = 1 para todos xt no sub-bloco atual com |xj = 1 h(xt) = 24 para todos xt no sub-bloco atual com |%J > 1 h(xi) = 216 para todos xt no sub-bloco imediatamente precedente t = 2
[0188] Para a função (1), n é definido do seguinte modo com df sendo 8: n = (0,1,2,24, 216,216 + 1, 216 + 2,216 + 24)
[0189] Para selecionar o contexto de coef_dis_superior2_bandeira, podia ser computado o seguinte pelo aparelho de codificação/descodificação entrópica. Em particular, o mesmo usaria a função (1) com (2) tendo o parâmetro de função definido conforme descrito acima relativamente a coef_dis_superior2_bandeira, mas com df sendo 1: n = (216)
[0190] Para determinar o parâmetro de simbolização para coef_dis_nível_remanescente, o determinador do parâmetro de simbolização podia usar a função comum (1) com os parâmetros de função definidos do seguinte modo:
[0191] Para a função (2), os parâmetros são definidos do seguinte modo: wí = 1 para todos xt no sub-bloco atual, mas zero noutro lugar h(xt) = 1 para o mais recentemente - de acordo com o scan interno de coeficiente 204 - visitado coeficiente xt, para o qual foi codificado coef_dis_nível_remanescente, isto é, cujo nível entra no intervalo correspondente ao esquema de simbolização; h(xi) = 0 em outro lugar no template t = 0
[0192] Para a função (1) n é definido o seguinte:
Figure img0013
simbolização, p. ex. o Parâmetro Rice, para o acima mencionado e mais recentemente - de acordo com o scan interno de coeficiente204 - visitado coeficiente. Utilizando o resultante g(f), é determinado o parâmetro de simbolização para o coeficiente atual 206.
[0193] A seguinte sintaxe podia ser utilizada para transferir os elementos de sintaxe recentemente delineados: residual_codificação( x0, y0, log2TransfTamanho, cIdx ) { se( transformar_sair_ativado_bandeira && !cu_transquant_bypass_bandeira && ( log2TransfTamanho = = 2 ) ) transformar_sair_bandeira[ x0 ][ y0 ][ cIdx ] último_significante_coef_x_prefixo último_significante_coef_y_prefixo se( último_significante_coef_x_prefixo > 3 ) último_significante_coef_x_sufixo se( último_significante_coef_y_prefixo > 3 ) último_significante_coef_y_sufixo últimoScanPos = 16 últimoSubBloco = ( 1 << ( log2TransfTamanho - 2 ) ) * ( 1 << ( log2TransfTamanho - 2 ) ) - 1 fazer { se( últimoScanPos = = 0 ) { últimoScanPos = 16 últimoSubBloco- - } últimoScanPos- - xS = ScanOrdem[ log2TransfTamanho - 2 ][ scanIdx ][ últimoSubBloco ][ 0 ] yS = ScanOrdem[ log2TransfTamanho - 2 ][ scanIdx ][ últimoSubBloco ][ 1 ] xC = ( xS << 2 ) + ScanOrdem[ 2 ][ ScanIdx ][ últimoScanPos ][ 0 ] yC = ( yS << 2 ) + ScanOrdem[ 2 ][ scanIdx ][ últimoScanPos ][ 1 ] } enquanto( ( xC != ÚltimoSignificanteCoefX ) | | ( yC != ÚltimoSignificanteCoefY ) ) para( i = últimoSubBloco; i >= 0; i- - ) { xS = ScanOrdem[ log2TransfTamanho - 2 ][ scanIdx ][ i ][ 0 ] yS = ScanOrdem[ log2TransfTamanho - 2 ][ scanIdx ][ i ][ 1 ] inferSbDcSigCoefBandeira = 0 se( ( i < últimoSubBloco ) && ( i > 0 ) ) { codificado_sub_bloco_bandeira[ xS ][ yS ] inferSbDcSigCoefBandeira = 1 } para( n = ( i = = últimoSubBloco ) ? últimoScanPos - 1 : 15; n >= 0; n- - ) { xC = ( xS << 2 ) + ScanOrdem[ 2 ][ scanIdx ][ n ][ 0 ] yC = ( yS << 2 ) + ScanOrdem[ 2 ][ scanIdx ][ n ][ 1 ] se( codificado_sub_bloco_bandeira[ xS ][ yS ] && ( n > 0 | | !inferSbDcSigCoefBandeira ) ) { significante_coef_bandeira[ xC ][ yC ] se( significante_coef_bandeira[ xC ][ yC ] ) inferSbDcSigCoefBandeira = 0 } } primeiroSigScanPos = 16 últimoSigScanPos = -1 númSuperior1Bandeira = 0 últimoSuperior1ScanPos = -1 para( n = 15; n >= 0; n- - ) { xC = ( xS << 2 ) + ScanOrdem[ 2 ][ scanIdx ][ n ][ 0 ] yC = ( yS << 2 ) + ScanOrdem[ 2 ][ scanIdx ][ n ][ 1 ] se( significante_coef_bandeira[ xC ][ yC ] ) { se( númSuperior1Bandeira < 8 ) { coef_dis_nível_superior1_bandeira[ n ] númSuperior1Bandeira++ se( coef_dis_nível_superior1_bandeira[ n ] && últimoSuperior1ScanPos = = -1 ) últimoSuperior1ScanPos = n } se( últimoSigScanPos = = -1) últimoSigScanPos = n primeiroSigScanPos = n } } sinOculto = ( últimoSigScanPos - primeiroSinScanPos > 3 && !cu_transquant_bypass_bandeira ) se( últimoSuperior1ScanPos != -1 ) coef_dis_nível_superior2_bandeira[ últimoSuperior1ScanPos ] para( n = 15; n >= 0; n- - ) { xC = ( xS << 2 ) + ScanOrdem[ 2 ][ scanIdx ][ n ][ 0 ] yC = ( yS << 2 ) + ScanOrdem[ 2 ][ scanIdx ][ n ][ 1 ] se( significante_coef_bandeira[ xC ][ yC ] && ( !sin_dados_oculto_bandeira | | !sinOculto | | n != primeiroSinScanPos ) ) coef_sin_bandeira[ n ] } númSinCoef = 0 somDisNível = 0 para( n = 15; n >= 0; n- - ) { xC = ( xS << 2 ) + ScanOrdem[ 2 ][ scanIdx ][ n ][ 0 ] yC = ( yS << 2 ) + ScanOrdem[ 2 ][ scanIdx ][ n ][ 1 ] se( significante_coef_bandeira[ xC ][ yC ] ) { baseNível = 1 + coef_dis_nível_superior1_bandeira[ n ] + coef_dis_nível_superior2_bandeira[ n ] se( baseNível = = ( ( númSinCoef < 8 ) ? ( (n = = últimoSuperior1ScanPos) ? 3 : 2 ) : 1 ) ) coef_dis_nível_remanescente[ n ] TransCoefNível[ x0 ][ y0 ][ cIdx ][ xC ][ yC ] = ( coef_dis_nível_remanescente[ n ] + baseNível ) * ( 1 - 2 * coef_sin_bandeira[ n ] ) se( sin_dados_oculto_bandeira && sinOculto ) { somDisNível += ( coef_dis_nível_remanescente[ n ] + baseNível ) se( n = = primeiroSinScanPos && ( ( somDisNível % 2 ) = = 1) ) TransCoefNível[x0][y0][cIdx][xC][yC] = - TransCoefNível[x0][y0][cIdx][xC][yC] } númSinCoef++ } } } }
[0194] A sintaxe indica que o nível do coeficiente de transformação é composto por coef_dis_nível_remanescente e baseNível, em que baseNível é composto por 1 + coef_dis_nível_superior1_bandeira[ n ] + coef_dis_nível_superior2_bandeira[ n ]. 1 é usado, uma vez que neste local (ou no momento em que os níveis são reconstruídos no descodificador) o elemento de sintaxe é significante_coef_bandeira=1. “Primeiro conjunto” seria o código TU (código Rice com parametrização igual a 0) - deste são formados os 3 primeiros elementos de sintaxe. “Segundo conjunto” forma o elemento de sintaxecoef_dis_nível_remanescente.
[0195] Uma vez que o limite se desloca entre “primeiro” e “segundo conjunto” o valor máximo é definido por coef_dis_superior1_bandeira, coef_dis_superior2_bandeira ou por significante_coef_bandeira, dependendo os setores dos elementos de sintaxe na tabela.
[0196] As definições acima dos parâmetros de função continuam um pouco motivadas no seguinte.
[0197] g(f) forma a soma dos coeficientes vizinhos e, usando o resultado, deriva-se um contexto e um parâmetro de dessimbolização, em que a última modificação pode ser executada dependendo da posição espacial.
[0198] g(x) adquire um único valor. Este valor corresponde ao resultado da função f(x). Sabendo disto, a seleção de contexto e também a parametrização do parâmetro Rice podem ser derivados.
[0199] significante_coef_bandeira: Uma vez que h pode ser, ele próprio, uma função de x, f(x) ou qualquer outra função pode ser encadeada repetidamente. A função f(x) com wi=1 para todas as posições do sub-bloco direito 4x4, t=1 e h uma função que é configurado como f(x) mas invertido, de modo a que no fim resulte no valor 0 ou 1, isto é, h(x)=min( 1, f(x)).
[0200] Equivalentemente, para a segunda entrada, isto aplica-se ao sub- bloco inferior 4x4. De seguida, prevCsbf=ho+2*hi, em que prefCsbf pode ser uma função h dentro de f(x).
[0201] Se t=~ está definido, podem ser derivados os valores do elemento de sintaxecodificado_sub_bloco_bandeira. Assim sendo, é adquirido um valor entre 0 e incluindo 3 como um resultado para o mais distante f(x). O parâmetro n para g(x) seria então (xP+yP), xP, yP, ou (0,0). Se f(x)=0 resultados, então n=(xP+yP,xP+yP+3), para f(x)=1 n=(yP,yP+1) resultados, para f(x)=2 n=(xP,xP+1) resultados, e para f(x)=3 n=(0,0) resultados. Por assim dizer, f(x) pode ser avaliado diretamente para determinar n. A fórmula remanescente acima descreve meramente uma adaptação dependendo da luminância/crominância e outra dependência da posição global e scan. No caso de um puro bloco 4x4, f(x) pode ser configurado para que o valor para prevCsbf=4 (também possa ser diferente) e, assim, a tabela de mapeamento pode ser reproduzida.
[0202] coef_dis_nível_superior1_bandeira: Aqui, a avaliação dos sub- blocos é similar, em que apenas o sub-bloco precedente é avaliado. O resultado é, p. ex. 1 ou 2 (só tem de ser dois valores diferentes), em que t=2. Isto corresponde à seleção de um índice base dependendo dos níveis já descodificados no sub-bloco precedente. A dependência direta dos níveis localizados dentro do sub-bloco pode ser, assim, adquirida. Efetivamente, um índice faz a ligação quando um 0 foi descodificado (limitado a 3 a começar por 1) e, assim que um 1 foi descodificado, é definido para 0. Se a disposição não é considerada, a parametrização pode ser executada do seguinte modo, a começar de 0. wi=1 para todos os níveis no mesmo sub-bloco e t=3, isto é, f(x) providencia o número de níveis com coef_dis_superior1_bandeira=1. Para uma outra função f(x) t=2, isto é, o número de posições com um elemento de sintaxe codificado coef_dis_superior1_bandeira. A primeira função está limitada, isto é, h0=f(x)=min(f0(x),2) e a segunda função está limitada com h1=f(x)=max(f1(x),1). Tudo isto encadeado com uma função delta (0 se h1=1, h0 caso contrário). Para coef_dis_superior2_bandeira é utilizada apenas a derivação do conjunto (wi é definido para 0 para a função interior encadeada).
[0203] coef_dis_nível_remanescente: A seleção só está limitada ao sub- bloco atual e n é derivado conforme descrito acima.
[0204] Relativamente à versão anteriormente delineada, deve registrar-se o seguinte. Em particular, em conformidade com a descrição acima, existem diferentes possibilidades relativamente à definição do template: o template podia ser um template em movimento, cuja posição é determinada dependendo da posição do coeficiente atual 206. A Fig. 13 apresenta um template em movimento deste tipo com uma linha tracejada 208. O template é composto pelo sub-bloco atual, dentro do qual se encontra o coeficiente atual 206, os sub-blocos vizinhos à direita e abaixo do sub-bloco atual, assim como, o um ou mais sub-blocos que precedem imediatamente o sub-bloco atual no scan do sub-bloco 202 ou qualquer um dos scans dos sub-blocos 202 se houver vários deles, de entre os quais pode ser selecionado um, usando um índice de scan, conforme explicado acima. Como alternativa, o template 208 pode simplesmente abranger todos os coeficientes de transformação 12 do bloco 10.
[0205] No exemplo acima, existem outras possibilidades diferentes para selecionar os valores de h e n. Estes valores podem, correspondentemente, ser definidos de modo diferente. Isto também é, de algum modo, verdade relativamente a wi, no que diz respeito a essas importâncias, que são definidas para um. O mesmo pode ser definido para outro valor que não zero. Nem têm de ser iguais um ao outro. Como wi é multiplicado por h(xi), pode ser conseguido o mesmo valor de produto ao definir de modo diferente wi de não zero. Além disso, o parâmetro de simbolização não tem de ser um parâmetro Rice ou, dizendo de outro modo, o esquema de simbolização não se limita a ser um esquema de simbolização Rice. Relativamente à seleção do índice de contexto, faz-se referência à descrição acima, onde já se registrou que pode ser obtido um índice final de contexto se adicionar o índice de contexto conforme obtido, usando a função g(f) para alguns índices de desvio que é, por exemplo, específica para o respetivo tipo de elemento de sintaxe, isto é, específica para significante_coef_bandeira, coef_dis_nível_superior1_bandeira, e coef_dis_nível_superior2_bandeira.
[0206] Apesar de alguns aspetos terem sido descritos no contexto de um aparelho, é claro que estes aspetos também representam uma descrição do correspondente método, em que um bloco ou dispositivo corresponde a um passo de método ou a uma característica de um passo de método. De modo análogo, os aspetos descritos no contexto de um passo de método também representam uma descrição de um correspondente bloco ou item ou característica de um correspondente aparelho. Alguns ou todos os passos do método podem ser executados (ou usados) por um aparelho de hardware, com por exemplo, um microprocessador, um computador programável ou um circuito eletrônico. Em algumas versões, um ou mais dos mais importantes passos do método podem ser executados por um aparelho destes.
[0207] Dependendo de certos requisitos de implementação, as versões da invenção podem ser implementadas em hardware ou em software. A implementação pode ser realizada usando um meio de armazenamento digital, por exemplo uma disquete, um DVD, um Blu-Ray, um CD, um ROM, um PROM, um EPROM, um EEPROM ou uma memória FLASH, com sinais de controle de leitura eletrônica guardados lá, que cooperam (ou são capazes de cooperar) com um sistema de computador programável, de modo a que seja executado o respetivo método. Por isso, o meio de armazenamento digital pode ser lido em computador. Algumas versões de acordo com a invenção compreendem um suporte de dados com sinais de controle de leitura eletrônica, que são capazes de cooperar com um sistema de computador programável, de modo a que seja executado um dos métodos aqui descritos.
[0208] De um modo geral, as versões da presente invenção podem ser implementadas como um produto de programa de computador com um código de programa, sendo o código de programa operativo para executar um dos métodos quando o produto do programa de computador corre em um computador. O código de programa pode, por exemplo, ser guardado em um suporte de leitura em máquina.
[0209] Outras versões compreendem o programa de computador para executar um dos métodos aqui descritos, guardados em um suporte de leitura em máquina.
[0210] Por outras palavras, uma versão do método da invenção é, por isso, um programa de computador com um código de programa para executar um dos métodos aqui descritos, quando o programa de computador corre em um computador.
[0211] Outra versão dos métodos da invenção é, por isso, um suporte de dados (ou um suporte de armazenamento digital ou um suporte de leitura em computador) compreendendo, aí gravados, o programa de computador para executar um dos métodos aqui descritos. O suporte de dados, o suporte de armazenamento digital ou o suporte gravado são tipicamente tangíveis e/ou não transicionários.
[0212] Outra versão do método da invenção é, por isso, um fluxo de dados ou uma sequência de sinais que representam o programa de computador para executar um dos métodos aqui descritos. O fluxo de dados ou a sequência de sinais pode, por exemplo, ser configurado para ser transferido através de uma ligação de comunicação de dados, por exemplo via Internet.
[0213] Outra versão compreende um meio de processamento, por exemplo, um computador, ou um dispositivo lógico programável, configurado ou adaptado para executar um dos métodos aqui descritos.
[0214] Outra versão compreende um computador com o programa de computador instalado para executar um dos métodos aqui descritos.
[0215] Outra versão de acordo com a invenção compreende um aparelho ou um sistema configurado para transferir (por exemplo, eletronicamente ou opticamente) um programa de computador para executar um dos métodos aqui descritos para um receptor. O receptor pode, por exemplo, ser um computador, um dispositivo móvel, um dispositivo de memória ou idêntico. O aparelho ou sistema pode, por exemplo, compreender um servidor de ficheiros para transferir o programa de computador para o receptor.
[0216] Em algumas versões, pode ser utilizado um dispositivo programável lógico (por exemplo uma rede de portas lógicas programáveis) para executar algumas ou todas as funcionalidades dos métodos aqui descritos Em algumas versões, uma rede de portas lógicas programáveis pode cooperar com um microprocessador para executar um dos métodos aqui descritos. De um modo geral, os métodos são preferencialmente executados por qualquer aparelho de hardware.
[0217] As versões acima descritas são meramente ilustrativas para os princípios da presente invenção. Compreende-se que as modificações e variações das disposições e dos detalhes descritos serão evidentes aos profissionais da matéria. Pretende-se, por isso, que seja limitado apenas pelo âmbito das reivindicações impendentes da patente e não pelos detalhes específicos da descrição e explicação das versões aqui constantes.

Claims (26)

1. Decodificador para decodificação de um fluxo contínuo de dados (32) que compreende um vídeo codificado que inclui informação relacionada a uma pluralidade de coeficientes de transformação (12) associados com o vídeo codificado, o decodificador compreendendo: um decodificador de entropia adaptativo (80) ao contexto configurado para, para um coeficiente de transformação atual (x), decodificar em entropia, usando um processador, um primeiro símbolo do fluxo contínuo de dados (32) usando um contexto; um dessimbolizador (82) configurado para, para o coeficiente de transformação atual (x), mapear, usando um processador, um segundo símbolo do fluxo contínuo de dados (32) para um nível do coeficiente de transformação com base em um parâmetro de simbolização (46); e um decodificador de figura (100) configurado para aplicar, usando um processador, codificação preditiva com base em um sinal de previsão residual para reconstruir um bloco de uma figura do vídeo, em que o sinal de previsão residual é associado com o primeiro símbolo decodificado por entropia e o nível do coeficiente de transformação, e o decodificador é configurado para determinar o primeiro coeficiente de transformação previamente decodificado com base em um arranjo espacial relativo do coeficiente de transformação atual (x) em relação à pluralidade de coeficientes de transformação (12); sendo o decodificador caracterizado por: o contexto ser determinado pela aplicação de uma operação relacionada a pelo menos um primeiro coeficiente de transformação previamente decodificado; e o parâmetro de simbolização (46) ser determinado pela aplicação da operação relacionada a pelo menos um segundo coeficiente de transformação previamente decodificado.
2. Decodificador, de acordo com a reivindicação 1, caracterizado por o decodificador ser configurado para extrair, do fluxo contínuo de dados (32), informação sobre uma posição de um último coeficiente de transformação não zero (L) dentre os coeficientes de transformação de um bloco de coeficientes de transformação (10) ao longo de uma ordem de escaneamento pré-determinada (14), em que a pluralidade de coeficientes de transformação (12) abrange os coeficientes de transformação do bloco de coeficientes de transformação (10) do último coeficiente de transformação não zero (L) ao longo da ordem de escaneamento (14) até um coeficiente de transformação DC do bloco de coeficientes de transformação (10).
3. Decodificador, de acordo com a reivindicação 2, caracterizado por o dessimbolizador (82) ser configurado para usar um primeiro esquema de simbolização para mapeamento do primeiro símbolo do último coeficiente de transformação não zero (L) para um primeiro nível menor do que ou igual a um nível máximo, em que um nível zero não se aplica para o último coeficiente de transformação.
4. Decodificador, de acordo com a reivindicação 2, caracterizado por o decodificador de entropia adaptativo (80) ao contexto ser configurado para decodificar em entropia o primeiro símbolo para o último coeficiente de transformação não zero (L) usando um contexto que é diferente de um contexto usado na decodificação de entropia do primeiro símbolo de um coeficiente de transformação diferente do último coeficiente de transformação não zero (L).
5. Decodificador, de acordo com a reivindicação 2, caracterizado por o decodificador de entropia adaptativo (80) ao contexto atravessar os coeficientes de transformação do bloco de coeficientes de transformação (10) em uma ordem de escaneamento que leva do último coeficiente de transformação não zero (L) ao coeficiente de transformação DC do bloco de coeficientes de transformação.
6. Decodificador, de acordo com a reivindicação 1, caracterizado por o decodificador ser configurado para decodificar a pluralidade de coeficientes de transformação (12) do fluxo contínuo de dados (32) em dois escaneamentos, em que o decodificador de entropia adaptativo (80) ao contexto é configurado para decodificar em entropia o primeiro símbolo para os coeficientes de transformação do fluxo contínuo de dados (32) em uma ordem correspondente a um primeiro escaneamento dos coeficientes de transformação, o decodificador compreendendo um extrator (84) configurado para extrair subsequentemente, do fluxo contínuo de dados (32), os segundos símbolos, para os coeficientes de transformação para os quais os primeiros símbolos são mapeados sobre um nível máximo associado com o respectivo primeiro símbolo, em uma ordem correspondente a um segundo escaneamento dos coeficientes de transformação.
7. Decodificador, de acordo com a reivindicação 1, caracterizado por o decodificador ser configurado para decodificar a pluralidade de coeficientes de transformação (12) do fluxo contínuo de dados (32) sequencialmente em um escaneamento, em que os segundos símbolos são intercalados no fluxo contínuo de dados (32) entre os primeiros símbolos dos coeficientes de transformação, e em que o decodificador de entropia adaptativo (80) ao contexto e um extrator (84) do decodificador são configurados para, para cada coeficiente de transformação em uma ordem de escaneamento do um escaneamento, extrair, do fluxo contínuo de dados (32), os segundos símbolos de respectivos coeficientes de transformação para os quais os primeiros símbolos são mapeados sobre um nível máximo associado com o respectivo primeiro símbolo imediatamente subsequente à decodificação de entropia do decodificador de entropia adaptativo (80) ao contexto dos primeiros símbolos dos respectivos coeficientes de transformação para os quais os primeiros símbolos são mapeados sobre o nível máximo.
8. Decodificador, de acordo com a reivindicação 1, caracterizado por compreender adicionalmente um extrator (84) configurado para extrair o segundo símbolo do fluxo contínuo de dados (32) diretamente ou usando decodificação de entropia que usa uma distribuição de probabilidade fixa.
9. Decodificador, de acordo com a reivindicação 1, caracterizado por o dessimbolizador (82) ser configurado para mapear o primeiro símbolo para um nível do coeficiente de transformação menor do que ou igual a um nível máximo associado com o primeiro símbolo com base em um esquema de binarização unário truncado.
10. Decodificador, de acordo com a reivindicação 1, caracterizado por o dessimbolizador (82) ser configurado para mapear o segundo símbolo com base em um código Rice.
11. Codificador para codificação em um fluxo contínuo de dados (32) da informação relacionada a uma pluralidade de coeficientes de transformação (12) associados com um vídeo, o codificador compreendendo: um codificador de figura (60) configurado para aplicar, usando um processador, codificação preditiva em um bloco de uma figura do vídeo para obter um sinal de previsão residual relacionado ao bloco, um codificador de entropia adaptativo (36) ao contexto configurado para, para um coeficiente de transformação atual (x) relacionado ao sinal de previsão residual, codificar em entropia, usando um processador, um primeiro símbolo no fluxo contínuo de dados (32) usando um contexto; e um simbolizador (34) configurado para mapear, usando um processador, um nível do coeficiente de transformação do coeficiente de transformação atual (x) para um segundo símbolo com base em um parâmetro de simbolização (46), em que o codificador é configurado para determinar o primeiro coeficiente de transformação previamente codificado com base em um arranjo espacial relativo do coeficiente de transformação atual (x) em relação à pluralidade de coeficientes de transformação (12), sendo o codificador caracterizado por: o contexto ser determinado pela aplicação de uma operação relacionada a pelo menos um primeiro coeficiente de transformação previamente codificado; e o parâmetro de simbolização (46) ser determinado pela aplicação da operação relacionada a pelo menos um segundo coeficiente de transformação previamente codificado.
12. Codificador, de acordo com a reivindicação 11, caracterizado por o codificador ser configurado para inserir, no fluxo contínuo de dados (32), a informação sobre uma posição de um último coeficiente de transformação não zero (L) dentre os coeficientes de transformação de um bloco de coeficientes de transformação (10) ao longo de uma ordem de escaneamento pré-determinada (14), em que a pluralidade de coeficientes de transformação (12) abrange os coeficientes de transformação do bloco de coeficientes de transformação (10) do último coeficiente de transformação não zero (L) ao longo da ordem de escaneamento (14) até um coeficiente de transformação DC do bloco de coeficientes de transformação (10).
13. Codificador, de acordo com a reivindicação 12, caracterizado por o simbolizador (34) ser configurado para usar um primeiro esquema de simbolização para mapeamento do primeiro símbolo do último coeficiente de transformação não zero para um primeiro nível menor do que ou igual a um nível máximo, em que um nível zero não se aplica para o último coeficiente de transformação.
14. Codificador, de acordo com a reivindicação 12, caracterizado por o codificador de entropia adaptativo (36) ao contexto ser configurado para codificar em entropia o primeiro símbolo para o último coeficiente de transformação não zero (L) usando um contexto que é diferente de um contexto usado na decodificação de entropia do primeiro símbolo de um coeficiente de transformação diferente do último coeficiente de transformação não zero (L).
15. Codificador, de acordo com a reivindicação 12, caracterizado por o codificador de entropia adaptativo (36) ao contexto atravessar os coeficientes de transformação do bloco de coeficientes de transformação (10) em uma ordem de escaneamento que leva do último coeficiente de transformação não zero (L) ao coeficiente de transformação DC do bloco de coeficientes de transformação (10).
16. Codificador, de acordo com a reivindicação 11, caracterizado por o codificador ser configurado para codificar a pluralidade de coeficientes de transformação (12) do fluxo contínuo de dados (32) em dois escaneamentos, em que o codificador de entropia adaptativo (36) ao contexto é configurado para codificar em entropia o primeiro símbolo para os coeficientes de transformação no fluxo contínuo de dados (32) em uma ordem correspondente a um primeiro escaneamento dos coeficientes de transformação, o codificador compreendendo um inseridor (40) configurado para inserir subsequentemente no fluxo contínuo de dados (32) os segundos símbolos, para os coeficientes de transformação para os quais os primeiros símbolos são mapeados sobre um nível máximo associado com o respectivo primeiro símbolo, em uma ordem correspondente a um segundo escaneamento dos coeficientes de transformação.
17. Codificador, de acordo com a reivindicação 11, caracterizado por o codificador ser configurado para codificar a pluralidade de coeficientes de transformação (12) no fluxo contínuo de dados (32) sequencialmente em um escaneamento, em que os segundos símbolos são intercalados no fluxo contínuo de dados (32) entre os primeiros símbolos dos coeficientes de transformação, e em que o codificador de entropia adaptativo (36) ao contexto e um inseridor (40) do codificador são configurados para, para cada coeficiente de transformação em uma ordem de escaneamento do um escaneamento, inserir, no fluxo contínuo de dados (32), os segundos símbolos de respectivos coeficientes de transformação para os quais os primeiros símbolos são mapeados sobre um nível máximo associado com o primeiro símbolo, imediatamente subsequente à codificação de entropia do codificador de entropia adaptativo (36) ao contexto dos primeiros símbolos dos respectivos coeficientes de transformação para os quais os primeiros símbolos são mapeados sobre o nível máximo.
18. Codificador, de acordo com a reivindicação 11, caracterizado por compreender adicionalmente um inseridor (40) configurado para inserir o segundo símbolo no fluxo contínuo de dados (32) diretamente ou usando a codificação de entropia que usa uma distribuição de probabilidade fixa.
19. Codificador, de acordo com a reivindicação 11, caracterizado por o simbolizador (34) ser configurado para mapear o primeiro símbolo para um nível do coeficiente de transformação menor do que ou igual a um nível máximo associado com o primeiro símbolo, com base em um esquema de binarização unário truncado.
20. Codificador, de acordo com a reivindicação 11, caracterizado por o simbolizador (34) ser configurado para mapear o segundo símbolo com base em um código Rice.
21. Método para decodificação de um fluxo contínuo de dados (32) que compreende um vídeo codificado que inclui informação relacionada a uma pluralidade de coeficientes de transformação (12) associados com o vídeo codificado, o método compreendendo: decodificar em entropia, para um coeficiente de transformação atual (x), um primeiro símbolo do fluxo contínuo de dados (32) usando um contexto; mapear, para o coeficiente de transformação atual, um segundo símbolo do fluxo contínuo de dados (32) para um nível do coeficiente de transformação com base em um parâmetro de simbolização (46); aplicar a codificação preditiva com base em uma previsão residual para reconstruir um bloco de uma figura do vídeo, em que o sinal de previsão residual é associado com o primeiro símbolo decodificado por entropia e o nível do coeficiente de transformação; e determinar o primeiro coeficiente de transformação previamente decodificado com base em um arranjo espacial relativo do coeficiente de transformação atual (x) em relação à pluralidade de coeficientes de transformação (12), sendo o método caracterizado por: a decodificação de entropia compreender aplicar uma operação relacionada a pelo menos um primeiro coeficiente de transformação previamente decodificado para determinar o contexto; e o mapeamento compreender aplicar a operação relacionada a pelo menos um segundo coeficiente de transformação previamente decodificado para determinar o parâmetro de simbolização (46).
22. Método, de acordo com a reivindicação 21, caracterizado por compreender adicionalmente extrair, do fluxo contínuo de dados (32), a informação sobre uma posição de um último coeficiente de transformação não zero (L) dentre os coeficientes de transformação de um bloco de coeficientes de transformação (10) ao longo de uma ordem de escaneamento pré-determinada (14), em que a pluralidade de coeficientes de transformação (12) abrange os coeficientes de transformação do bloco de coeficientes de transformação (10) do último coeficiente de transformação não zero ao longo da ordem de escaneamento (14) até um coeficiente de transformação DC do bloco de coeficientes de transformação (10).
23. Método, de acordo com a reivindicação 21, caracterizado por compreender adicionalmente: decodificar a pluralidade de coeficientes de transformação (12) do fluxo contínuo de dados (32) sequencialmente em um escaneamento, em que os segundos símbolos são intercalados no fluxo contínuo de dados (32) entre os primeiros símbolos dos coeficientes de transformação, e para cada coeficiente de transformação em uma ordem de escaneamento do um escaneamento, extrair, do fluxo contínuo de dados (32), os segundos símbolos de respectivos coeficientes de transformação para os quais os primeiros símbolos são mapeados sobre um nível máximo associado com o respectivo primeiro símbolo imediatamente subsequente à decodificação de entropia dos primeiros símbolos dos respectivos coeficientes de transformação para os quais os primeiros símbolos são mapeados sobre o nível máximo.
24. Método, de acordo com a reivindicação 21, caracterizado por compreender adicionalmente extrair o segundo símbolo do fluxo contínuo de dados (32) diretamente ou usando decodificação de entropia que usa uma distribuição de probabilidade fixa.
25. Método, de acordo com a reivindicação 21, caracterizado por compreender adicionalmente mapear o primeiro símbolo para um nível do coeficiente de transformação menor do que ou igual a um nível máximo associado com o primeiro símbolo com base em um esquema de binarização unário truncado.
26. Método, de acordo com a reivindicação 21, caracterizado por o mapeamento do segundo símbolo ser com base em um código Rice.
BR122020007580-5A 2012-01-20 2013-01-21 Decodificador, codificador e método para decodificação de um fluxo contínuo de dados BR122020007580B1 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261588846P 2012-01-20 2012-01-20
US61/588,846 2012-01-20
BR112014017916-6A BR112014017916B1 (pt) 2012-01-20 2013-01-21 Codificação de coeficiente de transformação
PCT/EP2013/051053 WO2013107908A1 (en) 2012-01-20 2013-01-21 Transform coefficient coding

Publications (1)

Publication Number Publication Date
BR122020007580B1 true BR122020007580B1 (pt) 2021-10-26

Family

ID=47603696

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112014017916-6A BR112014017916B1 (pt) 2012-01-20 2013-01-21 Codificação de coeficiente de transformação
BR122020007580-5A BR122020007580B1 (pt) 2012-01-20 2013-01-21 Decodificador, codificador e método para decodificação de um fluxo contínuo de dados

Family Applications Before (1)

Application Number Title Priority Date Filing Date
BR112014017916-6A BR112014017916B1 (pt) 2012-01-20 2013-01-21 Codificação de coeficiente de transformação

Country Status (25)

Country Link
US (9) US9712844B2 (pt)
EP (2) EP2999123A1 (pt)
JP (5) JP6133899B2 (pt)
KR (12) KR102466326B1 (pt)
CN (11) CN107302704B (pt)
AU (6) AU2013211004B2 (pt)
BR (2) BR112014017916B1 (pt)
CA (1) CA2861953C (pt)
CL (1) CL2014001887A1 (pt)
DK (1) DK2805419T3 (pt)
ES (1) ES2638093T3 (pt)
HK (10) HK1204163A1 (pt)
HU (1) HUE035958T2 (pt)
IL (9) IL309374A (pt)
IN (1) IN2014KN01712A (pt)
MX (2) MX370956B (pt)
MY (2) MY170555A (pt)
PH (6) PH12018500136A1 (pt)
PL (1) PL2805419T3 (pt)
PT (1) PT2805419T (pt)
RU (4) RU2708967C2 (pt)
SG (3) SG10201609263YA (pt)
UA (3) UA120434C2 (pt)
WO (1) WO2013107908A1 (pt)
ZA (1) ZA201406039B (pt)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10091529B2 (en) * 2010-07-09 2018-10-02 Samsung Electronics Co., Ltd. Method and apparatus for entropy encoding/decoding a transform coefficient
US9042440B2 (en) 2010-12-03 2015-05-26 Qualcomm Incorporated Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
US9106913B2 (en) 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
US10397577B2 (en) 2011-03-08 2019-08-27 Velos Media, Llc Inverse scan order for significance map coding of transform coefficients in video coding
US9491469B2 (en) 2011-06-28 2016-11-08 Qualcomm Incorporated Coding of last significant transform coefficient
EP2786575A4 (en) 2012-01-20 2016-08-03 Sony Corp REDUCTION OF CODING COMPLEXITY ON CARD OF IMPORTANCE
CN107302704B (zh) 2012-01-20 2020-07-14 Ge视频压缩有限责任公司 从数据流解码具有变换系数级别的多个变换系数的装置
US9936200B2 (en) 2013-04-12 2018-04-03 Qualcomm Incorporated Rice parameter update for coefficient level coding in video coding process
US10021419B2 (en) * 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
US8879858B1 (en) * 2013-10-01 2014-11-04 Gopro, Inc. Multi-channel bit packing engine
FR3023112A1 (fr) * 2014-06-27 2016-01-01 Bcom Procede de codage d'une image numerique, procede de decodage, dispositifs et programmes d'ordinateurs associes
US9781424B2 (en) * 2015-01-19 2017-10-03 Google Inc. Efficient context handling in arithmetic coding
US10616604B2 (en) * 2015-09-01 2020-04-07 Qualcomm Incorporated Coefficient level coding in video coding
US10194147B2 (en) * 2017-01-19 2019-01-29 Google Llc DC coefficient sign coding scheme
US11354824B2 (en) * 2017-03-23 2022-06-07 Sony Corporation Image processing apparatus and method
KR102149023B1 (ko) * 2017-04-13 2020-08-28 엘지전자 주식회사 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
US10523968B2 (en) * 2017-09-18 2019-12-31 Google Llc Coding of last significant coefficient flags
EP3490253A1 (en) * 2017-11-23 2019-05-29 Thomson Licensing Encoding and decoding methods and corresponding devices
EP3503557A1 (en) * 2017-12-22 2019-06-26 Thomson Licensing Method and apparatus for video encoding and decoding based on context switching
CN117119195A (zh) 2018-03-29 2023-11-24 弗劳恩霍夫应用研究促进协会 变换系数块编码
WO2019196956A1 (zh) * 2018-04-13 2019-10-17 浙江大学 一种信息保持编解码方法与装置
EP3818703A1 (en) * 2018-07-02 2021-05-12 FRAUNHOFER-GESELLSCHAFT zur Förderung der angewandten Forschung e.V. Entropy coding of transform coefficients suitable for dependent scalar quantization
US11483575B2 (en) * 2018-08-24 2022-10-25 Hfi Innovation Inc. Coding transform coefficients with throughput constraints
US11336918B2 (en) * 2018-09-05 2022-05-17 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
KR20230170824A (ko) * 2018-09-24 2023-12-19 프라운호퍼-게젤샤프트 추르 푀르데룽 데어 안제반텐 포르슝 에 파우 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에 적합한 변환 계수의 효율적인 코딩
KR102631361B1 (ko) * 2018-10-11 2024-01-31 엘지전자 주식회사 변환 계수 코딩 방법 및 장치
WO2020089825A1 (en) * 2018-10-31 2020-05-07 Beijing Bytedance Network Technology Co., Ltd. Quantization parameters under coding tool of dependent quantization
US10931958B2 (en) 2018-11-02 2021-02-23 Fungible, Inc. JPEG accelerator using last-non-zero (LNZ) syntax element
US10827191B2 (en) 2018-11-02 2020-11-03 Fungible, Inc. Parallel coding of syntax elements for JPEG accelerator
US10848775B2 (en) * 2018-11-02 2020-11-24 Fungible, Inc. Memory layout for JPEG accelerator
US10827192B2 (en) 2018-11-02 2020-11-03 Fungible, Inc. Work allocation for JPEG accelerator
CN114374839B (zh) * 2018-11-12 2023-06-20 Lg电子株式会社 图像解码方法、图像编码方法和数据发送方法
CN112997505B (zh) * 2018-11-12 2023-03-24 三星电子株式会社 用于对系数等级进行熵编码的方法和装置以及用于对系数等级进行熵解码的方法和装置
US10904548B2 (en) * 2018-12-06 2021-01-26 Qualcomm Incorporated Coefficient processing for video encoding and decoding
CN113519155A (zh) * 2019-01-02 2021-10-19 弗劳恩霍夫应用研究促进协会 统一变换类型信令和变换类型相关的变换系数水平编码
US11134273B2 (en) 2019-02-14 2021-09-28 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
CN113508600A (zh) * 2019-03-11 2021-10-15 交互数字Vc控股公司 减少常规编解码二进制数的数量
BR112021017901A2 (pt) 2019-03-12 2021-12-07 Fraunhofer Ges Forschung Decodificador, codificador, métodos para decodificação e codificação, e fluxo de dados
US11451826B2 (en) * 2019-04-15 2022-09-20 Tencent America LLC Lossless coding mode and switchable residual coding
TW202046730A (zh) * 2019-04-24 2020-12-16 美商松下電器(美國)知識產權公司 編碼裝置、解碼裝置、編碼方法、及解碼方法
WO2021067278A1 (en) * 2019-10-01 2021-04-08 Beijing Dajia Internet Informationtechnology Co., Ltd. Methods and apparatus of residual and coefficient coding
CN115039409A (zh) * 2019-12-23 2022-09-09 交互数字Vc控股法国公司 用于视频编码和解码的残差处理
US11849133B2 (en) * 2020-12-10 2023-12-19 Qualcomm Incorporated Low complexity history usage for rice parameter derivation for high bit-depth video coding
CN113392511B (zh) * 2021-05-28 2022-11-22 广西电网有限责任公司电力科学研究院 基于频谱包络符号熵的有载分接开关机械状态监测方法
CN113489980B (zh) * 2021-08-13 2022-10-25 北京大学深圳研究生院 一种点云属性变换系数的熵编码和熵解码的方法及设备
US11606568B1 (en) * 2021-08-18 2023-03-14 Meta Platforms, Inc. End-of-block detection of quantized transform coefficient matrices in video encoding
CN114630128B (zh) * 2022-05-17 2022-07-22 苇创微电子(上海)有限公司 一种基于行数据分块重排的图像压缩、解压缩方法及系统

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7095783B1 (en) * 1992-06-30 2006-08-22 Discovision Associates Multistandard video decoder and decompression system for processing encoded bit streams including start codes and methods relating thereto
JP4480119B2 (ja) * 2000-03-30 2010-06-16 キヤノン株式会社 画像処理装置及び画像処理方法
US7099387B2 (en) * 2002-03-22 2006-08-29 Realnetorks, Inc. Context-adaptive VLC video transform coefficients encoding/decoding methods and apparatuses
DE10218812A1 (de) * 2002-04-26 2003-11-20 Siemens Ag Generische Datenstrombeschreibung
US7016547B1 (en) 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US6900748B2 (en) 2003-07-17 2005-05-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method and apparatus for binarization and arithmetic coding of a data value
US7599435B2 (en) * 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
KR100648258B1 (ko) 2004-08-02 2006-11-23 삼성전자주식회사 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더
CN100403801C (zh) * 2005-09-23 2008-07-16 联合信源数字音视频技术(北京)有限公司 一种基于上下文的自适应熵编/解码方法
US8848789B2 (en) 2006-03-27 2014-09-30 Qualcomm Incorporated Method and system for coding and decoding information associated with video compression
US20080162432A1 (en) * 2006-12-29 2008-07-03 Wen-Shan Wang Search table for unary k-th order exp-golomb decoder
US8488668B2 (en) * 2007-06-15 2013-07-16 Qualcomm Incorporated Adaptive coefficient scanning for video coding
CN100562114C (zh) * 2007-08-30 2009-11-18 上海交通大学 视频解码方法与解码装置
US7777654B2 (en) * 2007-10-16 2010-08-17 Industrial Technology Research Institute System and method for context-based adaptive binary arithematic encoding and decoding
WO2009092454A1 (en) * 2008-01-21 2009-07-30 Telefonaktiebolaget Lm Ericsson (Publ) Prediction-based image processing
CN101933328B (zh) 2008-01-22 2014-11-19 杜比实验室特许公司 利用动态查询表更新的自适应运动信息成本估计
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
SG171883A1 (en) * 2008-12-03 2011-07-28 Nokia Corp Switching between dct coefficient coding modes
TWI387314B (zh) * 2009-03-10 2013-02-21 Univ Nat Central Image processing apparatus and method thereof
CN101883280B (zh) * 2009-05-07 2014-08-27 香港科技大学 一种恢复噪声的视频编解码方法和系统
JP5369973B2 (ja) * 2009-08-03 2013-12-18 日本電気株式会社 データ符号化/復号方法および装置
JP2011035681A (ja) 2009-08-03 2011-02-17 Alpine Electronics Inc 磁気結合型スピーカ
JP2011114369A (ja) * 2009-11-24 2011-06-09 Mitsubishi Electric Corp 画像符号化復号装置
HUE051391T2 (hu) 2010-04-13 2021-03-01 Ge Video Compression Llc Szignifikancia térképek és transzformációs együttható blokkok kódolása
PL2559166T3 (pl) * 2010-04-13 2018-04-30 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Koder i dekoder dzielący interwał prawdopodobieństwa
SI3104617T1 (sl) * 2010-07-09 2017-12-29 Samsung Electronics Co., Ltd. Postopek entropijskega dekodiranja transformnih koeficientov
US9591320B2 (en) * 2010-07-15 2017-03-07 Texas Instruments Incorporated Context and bypass encoding video
US9154801B2 (en) 2010-09-30 2015-10-06 Texas Instruments Incorporated Method and apparatus for diagonal scan and simplified coding of transform coefficients
US9497472B2 (en) 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
CN107425855B (zh) 2011-01-14 2021-02-02 Ge视频压缩有限责任公司 熵编码设备和方法、熵解码设备和方法、及存储介质
US10397577B2 (en) * 2011-03-08 2019-08-27 Velos Media, Llc Inverse scan order for significance map coding of transform coefficients in video coding
US9106913B2 (en) * 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
US8974076B2 (en) 2011-03-09 2015-03-10 Judy Gergen Artistic lighting apparatus with cylindrical gobos
WO2013079081A1 (de) 2011-12-02 2013-06-06 Sms Logistiksysteme Gmbh Vorrichtung zum umsetzen von zu bunden gewickelten metallbändern
CN108900839B (zh) 2011-12-28 2022-05-31 夏普株式会社 图像解码装置及方法、图像编码装置及方法
CN107302704B (zh) 2012-01-20 2020-07-14 Ge视频压缩有限责任公司 从数据流解码具有变换系数级别的多个变换系数的装置
JP5547304B2 (ja) 2012-02-27 2014-07-09 シナノケンシ株式会社 圧縮機及び真空機
PL3515073T3 (pl) * 2012-03-26 2021-03-08 Jvckenwood Corporation Urządzenie do kodowania obrazu, sposób kodowania obrazu i program do kodowania obrazu
JP2013223051A (ja) * 2012-04-13 2013-10-28 Sharp Corp 算術復号装置、画像復号装置、算術符号化装置、および画像符号化装置

Also Published As

Publication number Publication date
AU2020244522A1 (en) 2020-10-29
US10462487B2 (en) 2019-10-29
KR101952360B1 (ko) 2019-02-27
US10271068B2 (en) 2019-04-23
IL292629A (en) 2022-07-01
IL308621A (en) 2024-01-01
HK1204163A1 (en) 2015-11-06
CN107302369B (zh) 2020-06-09
CN107302368A (zh) 2017-10-27
US20190349604A1 (en) 2019-11-14
CN107302705A (zh) 2017-10-27
AU2013211004B2 (en) 2016-03-17
MX2014008696A (es) 2015-03-05
US20200154141A1 (en) 2020-05-14
EP2805419A1 (en) 2014-11-26
KR20210020177A (ko) 2021-02-23
IL284378B (en) 2022-07-01
AU2022204497A1 (en) 2022-07-14
IN2014KN01712A (pt) 2015-10-23
HK1246053A1 (zh) 2018-08-31
CN107302366A (zh) 2017-10-27
HUE035958T2 (en) 2018-05-28
US11968395B2 (en) 2024-04-23
JP2017175629A (ja) 2017-09-28
AU2018217277B2 (en) 2020-07-02
CN107302363A (zh) 2017-10-27
DK2805419T3 (en) 2017-09-04
KR20200037450A (ko) 2020-04-08
IL277277B (en) 2021-07-29
IL233700A0 (en) 2014-09-30
US20140362925A1 (en) 2014-12-11
KR20170100048A (ko) 2017-09-01
HK1246051A1 (zh) 2018-08-31
ES2638093T3 (es) 2017-10-18
RU2745248C1 (ru) 2021-03-22
JP6826157B2 (ja) 2021-02-03
PH12014501659A1 (en) 2014-10-13
AU2016204082A1 (en) 2016-07-07
PH12018500139A1 (en) 2018-07-09
IL270665B (en) 2020-09-30
US20230269398A1 (en) 2023-08-24
CL2014001887A1 (es) 2014-11-21
MY170555A (en) 2019-08-19
SG10201609263YA (en) 2016-12-29
KR20240013893A (ko) 2024-01-30
US10045049B2 (en) 2018-08-07
JP2019176504A (ja) 2019-10-10
PH12018500136B1 (en) 2018-07-09
IL284378A (en) 2021-07-29
HK1246052A1 (zh) 2018-08-31
MX370956B (es) 2020-01-10
IL254922A0 (en) 2017-12-31
CN107302364A (zh) 2017-10-27
US20170289574A1 (en) 2017-10-05
IL292629B1 (en) 2023-12-01
JP6133899B2 (ja) 2017-05-24
KR20190020196A (ko) 2019-02-27
CA2861953C (en) 2020-10-27
KR102626883B1 (ko) 2024-01-18
JP2021064974A (ja) 2021-04-22
IL265447B (en) 2019-11-28
CA2861953A1 (en) 2013-07-25
KR102293126B1 (ko) 2021-08-25
HK1246018A1 (zh) 2018-08-31
ZA201406039B (en) 2015-04-29
CN107302702B (zh) 2020-06-23
KR20210107147A (ko) 2021-08-31
UA114311C2 (uk) 2017-05-25
AU2013211004A1 (en) 2014-09-11
MY188788A (en) 2021-12-31
JP2015510319A (ja) 2015-04-02
HK1246020A1 (zh) 2018-08-31
WO2013107908A1 (en) 2013-07-25
UA120434C2 (uk) 2019-12-10
CN107302365B (zh) 2020-06-16
PH12018500137A1 (en) 2018-07-09
KR20150004930A (ko) 2015-01-13
CN107302704A (zh) 2017-10-27
KR101951886B1 (ko) 2019-02-26
RU2017145307A (ru) 2019-02-18
KR101760438B1 (ko) 2017-07-31
KR20220160118A (ko) 2022-12-05
HK1246019A1 (zh) 2018-08-31
PH12014501659B1 (en) 2014-10-13
CN107302364B (zh) 2021-01-19
AU2024202509A1 (en) 2024-05-09
US9712844B2 (en) 2017-07-18
AU2016204082B2 (en) 2018-05-24
IL309374A (en) 2024-02-01
CN107302363B (zh) 2020-07-14
KR101951887B1 (ko) 2019-02-26
RU2761510C1 (ru) 2021-12-09
US10757447B2 (en) 2020-08-25
EP2805419B1 (en) 2017-05-24
JP6542831B2 (ja) 2019-07-10
RU2708967C2 (ru) 2019-12-12
KR101951888B1 (ko) 2019-02-26
IL265447A (en) 2019-05-30
HK1246016A1 (zh) 2018-08-31
KR20140133526A (ko) 2014-11-19
CN104205646A (zh) 2014-12-10
CN107302368B (zh) 2020-07-28
CN107302367A (zh) 2017-10-27
CN107302365A (zh) 2017-10-27
PH12018500139B1 (en) 2018-07-09
AU2020244522B2 (en) 2022-03-24
KR101771656B1 (ko) 2017-09-05
PL2805419T3 (pl) 2017-10-31
KR20170087525A (ko) 2017-07-28
US20210120271A1 (en) 2021-04-22
AU2022204497B2 (en) 2024-01-18
KR102097668B1 (ko) 2020-04-06
SG11201404240PA (en) 2014-08-28
CN107302705B (zh) 2020-09-18
PH12018500138A1 (en) 2018-07-09
IL292629B2 (en) 2024-04-01
AU2018217277A1 (en) 2018-09-06
JP2023053086A (ja) 2023-04-12
MX346550B (es) 2017-03-24
BR112014017916B1 (pt) 2021-07-27
US20200366936A1 (en) 2020-11-19
PT2805419T (pt) 2017-09-01
CN107302704B (zh) 2020-07-14
PH12018500137B1 (en) 2018-07-09
CN107302366B (zh) 2020-07-14
CN107302369A (zh) 2017-10-27
PH12018500136A1 (en) 2018-07-09
IL277277A (en) 2020-10-29
KR20170100050A (ko) 2017-09-01
KR102466326B1 (ko) 2022-11-14
RU2017145307A3 (pt) 2019-02-18
SG10201811840RA (en) 2019-02-27
PH12019501221A1 (en) 2019-11-11
US11616982B2 (en) 2023-03-28
EP2999123A1 (en) 2016-03-23
US20180227597A1 (en) 2018-08-09
BR112014017916A2 (pt) 2019-10-08
HK1246017A1 (zh) 2018-08-31
RU2014134039A (ru) 2016-03-20
RU2641235C2 (ru) 2018-01-16
JP7227283B2 (ja) 2023-02-21
HK1246015A1 (zh) 2018-08-31
IL233700A (en) 2017-10-31
PH12018500138B1 (en) 2018-07-09
CN107302367B (zh) 2020-07-14
KR20170100049A (ko) 2017-09-01
CN104205646B (zh) 2017-09-22
UA124087C2 (uk) 2021-07-21
US10582219B2 (en) 2020-03-03
CN107302702A (zh) 2017-10-27
KR102217956B1 (ko) 2021-02-19
US20190191183A1 (en) 2019-06-20

Similar Documents

Publication Publication Date Title
BR122020007580B1 (pt) Decodificador, codificador e método para decodificação de um fluxo contínuo de dados
BR112021013117A2 (pt) Aparelho para decodificar e codificar uma imagem usando codificação preditiva e codificação residual de transformada com base em bloco, métodos e fluxo de dados

Legal Events

Date Code Title Description
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B350 Update of information on the portal [chapter 15.35 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 21/01/2013, OBSERVADAS AS CONDICOES LEGAIS.