• Nenhum resultado encontrado

Codificação por entropia no padrão MPEG-4/AVC:

N/A
N/A
Protected

Academic year: 2022

Share "Codificação por entropia no padrão MPEG-4/AVC: "

Copied!
32
0
0

Texto

(1)

Codificação por entropia no padrão MPEG-4/AVC:

CAVLC (Context-Based Adaptive Variable Length Coding ) e CABAC

(Context-Based Adaptive Binary Arithmetic Coding)

Carolina Medeiros Carvalho

(2)

Tópicos a abordar:

Introdução e visão geral sobre o padrão H.264/MPEG-4 AVC

Codificacão por entropia em outros padrões de codificação de vídeo

Codificação por entropia no padrão H.264/MPEG4-AVC:

a técnica CAVLC

Codificação por entropia no padrão H.264/MPEG4-AVC:

a técnica CABAC

Comparação de desempenho: CAVLC x CABAC

Conclusões

(3)

Visão geral sobre o padrão H.264/MPEG-4 AVC

Padrão internacional recente de codificação de vídeo, estado da arte. Padrão ITU-T e ISO

Vasta gama de aplicações. Ex: videotelefonia,

videoconferência, TV, streaming de vídeo e outras

Usa conceito tradicional de estimativa e compensação de movimento e codificação por transformada porém

incorporando novas características:

Predição intra-espacial;

Estimativa e compensação de movimento usando múltiplos quadros de referência e uso de quadros B como referência para codificar

outros quadros;

Menor tamanho de bloco para aplicação de transformada;

Novos métodos de codificação por entropia (CAVLC e CABAC)

(4)

Visão geral sobre o padrão H.264/MPEG-4 AVC

Codificador de vídeo do H.264/MPEG-4 AVC

(5)

Codificacão por entropia em outros padrões de codificação de vídeo

Padrões H.263 e MPEG-2:

Codificação por entropia baseada em tabelas fixas com códigos VLC (Variable Length Codes). Bloco de coeficientes

transformados e quantizados é mapeado em uma lista

unidimensional (vetor). Esta lista é codificada usando uma combinação de codificação por carreira e VLC (tipicamente codificação de Huffman)

Desvantagens deste tipo de codificação por entropia:

O uso de tabelas fixas de VLC não permite a adaptação às verdadeiras estatísticas dos símbolos.

Redundâncias entre os símbolos não podem ser exploradas pois há uma atribuição fixa entre as tabelas VLC e os

elementos de sintaxe.

Eventos com probabilidade grande não são tão bem

representados (na comparação com a codificação aritmética)

(6)

Codificacão por entropia em outros padrões de codificação de vídeo

Já quanto ao H.264/MPEG-4 AVC:

CAVLC (Context-Based Adaptive Variable Length Coding):

Usa adaptação ao contexto e VLC. Redundâncias inter- símbolo são exploradas através da comutação de tabelas VLC para os elementos dependendo dos símbolos já

codificados

CABAC (Context-Based Adaptive Binary Arithmetic Coding):

A redundância inter-símbolo é explorada pelo uso de contextos. Comutação entre diferentes modelos de

probabilidade de acordo com os símbolos já codificados.

Codificação Aritmética Adaptativa. Adaptação às estatísticas dos símbolos, as quais variam no tempo.

Codificação aritmética proporciona uma maior eficiência de codificação pelo uso de palavras de código não inteiras

(7)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica

CAVLC CAVLC, usado para codificar dados de blocos residuais vetorizados, foi projetado para tirar vantagem de várias características destes vetores:

Contêm majoritariamente zeros: codificação por carreira para representar sequências de zeros de maneira compacta.

Os coeficientes não nulos de maior freqüência são usualmente seqüências de +1 e -1, denominados “trailing 1s” ou “T1s”:

CAVLC codifica o número de T1s de uma maneira compacta.

Forte correlação estatística entre as quantidades de coeficientes não nulos em blocos vizinhos: n° de coeficientes não nulos é

codificado escolhendo-se uma tabela VLC dependendo das quantidades de coeficientes não nulos em blocos vizinhos.

A magnitude dos coeficientes não nulos decresce na direção das freqüências mais altas: a escolha da tabela VLC para a magnitude depende das magnitudes dos níveis recém codificados.

(8)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica

CAVLC CAVLC codifica um bloco de coeficientes seguindo os seguintes passos:

I. Codifica o número de coeficientes não nulos e trailing ones (coeff_token)

II. Codifica o sinal de cada T1

III. Codifica os níveis dos coeficientes não-nulos remanescentes IV. Codifica o número total de zeros antes do último coeficiente V. Codifica cada seqüência de zeros

Exemplo de codificação e descrição dos passos

Bloco 4x4:

Vetor ordenado:0,3,0,1,-1,-1,0,1,0,0...

(9)

Codificação por entropia no padrão

H.264/MPEG4-AVC: a técnica CAVLC

Exemplo de codificação e descrição dos passos Vetor ordenado:0,3,0,1,-1,-1,0,1,0,0...

I. Codifica o número de coeficientes não nulos e trailing ones (coeff_token)

TotalCoeffs = 5 (n° total de coeficientes não nulos, 0<=totalCoeffs<=16) T1s=3 (número de trailing ones, 0<=T1s<=3)

coeff_token= (5,3)

Para codificar coeff_token: Num-VLC0, Num-VLC1, Num-VLC2 ou Num-FLC. A escolha depende do parâmetro N, dado por:

N = (Nu + NL)/2

Nu: n°de coeficientes não nulos no bloco imediatamente superior ao bloco sendo codificado .

NL : o n°de coeficientes não nulos no bloco imediatamente à esquerda do bloco sendo codificado

(10)

Codificação por entropia no padrão

H.264/MPEG4-AVC: a técnica CAVLC

Exemplo de codificação e descrição dos passos Vetor ordenado:0,3,0,1,-1,-1,0,1,0,0...

I. Codifica o número de coeficientes não nulos e trailing ones (coeff_token)

O parâmetro N determina a tabela de look-up segundo a Tabela abaixo.

No nosso exemplo, assumiremos que a tabela Num-VLC0 é usada para codificar coeff_token (5, 3), o que resulta na palavra de código 00001

Valor de N Tabela para coeff_token

0,1 Num-VLC0

2,3 Num-VLC1

4,5,6,7 Num-VLC2

8 ou mais FLC

(11)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica

CAVLC

Exemplo de codificação e descrição dos passos

II. Codifica o sinal de cada T1

Para cada T1 ( +/-1 finais), um único bit codifica o sinal (0 = +, 1= -).

Eles são codificados em ordem reversa, começando com o T1 de maior freqüência.

No nosso exemplo: 0,3,0,1,-1,-1,0,1,0,0... Saída: 0 1 1 1 1 0

III. Codifica os níveis dos coeficientes não-nulos remanescentes

Eles são codificados na ordem reversa.

A escolha da tabela VLC para codificar cada nível se adapta dependendo da magnitude de cada nível sucessivo (adaptativo ao contexto)

7 tabelas a escolher: de Level_VLC0 a Level_VLC6.

Vetor ordenado:0,3,0,1,-1,-1,0,1,0,0...

(12)

Codificação por entropia no padrão

H.264/MPEG4-AVC: a técnica CAVLC

Exemplo de codificação e descrição dos passos Vetor ordenado:0,3,0,1,-1,-1,0,1,0,0...

III. Codifica os níveis dos coeficientes não-nulos remanescentes

A escolha da tabela se dá assim:

(a) A tabela é inicializada para Level_VLC0 (a menos que existam mais que 10 coeficientes não nulos e menos que 3 T1s, caso em que se começa com Level_VLC1).

(b) O componente não nulo de mais alta freqüência é codificado

(c) Se a magnitude deste coeficiente é maior que um limite pré-definido, a tabela escolhida é a próxima.

Tabela VLC atual Limite para incrementar tabela

VLC0 0

VLC1 3

VLC2 6

VLC3 12

VLC4 24

VLC5 48

VLC6 Não se aplica (tabela mais alta)

(13)

Codificação por entropia no padrão

H.264/MPEG4-AVC: a técnica CAVLC

III. Codifica os níveis dos coeficientes não-nulos remanescentes

No nosso exemplo, os coef. não nulos (retirando-se os T1s) são: 3 e 1

O primeiro a codificar é o 1 (ordem reversa), para o qual é utilizada Level_VLC0. A palavra de código obtida é 1.

Para o coeficiente 3 é utilizada Level_VLC1 obtendo-se a palavra de código 0010

IV. Codifica o número total de zeros antes do último coeficiente

TotalZeros é a soma de todos os zeros que precedem o mais alto coeficiente não nulo no vetor reordenado. Ele é codificado com um VLC separado.

No nosso exemplo:

0,3,0,1,-1,-1,0,1,0,0...

TotalZeros=3. Usando a tabela VLC correspondente para TotalZeros obtém-se a palavra de código 111.

Exemplo de codificação e descrição dos passos

Vetor ordenado:0,3,0,1,-1,-1,0,1,0,0...

(14)

Codificação por entropia no padrão

H.264/MPEG4-AVC: a técnica CAVLC

Exemplo de codificação e descrição dos passos Vetor ordenado:0,3,0,1,-1,-1,0,1,0,0...

Para cada coeficiente não-nulo (percorrendo-se a ordem reversa) é

codificado um par ZerosLeft/run_before, com ZerosLeft consistindo no número total de zeros à esquerda do coeficiente não-nulo em questão e run_before consistindo no número de zeros imediatamente à esquerda do coeficiente não nulo em questão. O par ZerosLeft/run_before é então

usado como entrada numa tabela VLC para obter a palavra de código.

Esta codificão só não é necessária em dois casos:

(a) Se não existem mais zeros à esquerda para codificar

(b) Se o coeficiente não nulo em questão é o de menor freqüência (último coeficiente não nulo na ordem reversa).

V. Codifica cada seqüência de zeros

(15)

Codificação por entropia no padrão

H.264/MPEG4-AVC: a técnica CAVLC

No nosso exemplo, coeficientes não-nulos a avaliar:

0,3,0,1,-1,-1,0,1,0,0...

Para o 1: ZerosLeft=3, run_before=1 e a palavra de código obtida=10

Para o -1: ZerosLeft=2, run_before=0 e a palavra de código obtida=1

Para o -1: ZerosLeft=2, run_before=0 e a palavra de código obtida=10

Para o 1: ZerosLeft=2, run_before=1 e a palavra de código obtida=01

Para o 3: não é necessário codificar run_before por se tratar do último coeficiente não nulo.

Exemplo de codificação e descrição dos passos Vetor ordenado:0,3,0,1,-1,-1,0,1,0,0...

V. Codifica cada seqüência de zeros

(16)

Codificação por entropia no padrão

H.264/MPEG4-AVC: a técnica CAVLC

Bits transmitidos:000010001110010111101101

Exemplo de codificação e descrição dos passos

Resultado da codificação do bloco:

(17)

Codificação por entropia no padrão

H.264/MPEG4-AVC: a técnica CAVLC

Exemplo de decodificação

Só dois 0s foram inseridos mas, como TotalZeros= 3, outro zero é inserido antes do coeficiente de mais baixa freqüência.

Saída: 0,3,0,1,-1,-1,0,1 (completada com 0s à direita até possuir 16 n°s) Abaixo a decodificação do bloco codificado anteriormente.Valores adicionados à saída em cada estágio estão sublinhados.

(18)

Codificação por entropia no padrão

H.264/MPEG4-AVC: a técnica CABAC

No CABAC, o processo de codificação se dá por três passos elementares:

I. Binarização

II. Modelagem de contexto

III. Codificação aritmética binária

(19)

Codificação por entropia no padrão

H.264/MPEG4-AVC: a técnica CABAC

I. A Binarização

Mapeamento de um elemento de sintaxe em uma string de bins.

Visa simplificação da modelagem e implementação.

As probabilidades dos símbolos individuais podem ser

recuperadas usando as probabilidades dos bins individuais das strings de bins.

Tipos básicos de esquemas de binarização:

Código unário

Código unário truncado

Código Exp-Golomb de k-ésima ordem

Código de comprimento fixo.

Esquemas híbridos (concatenação dos tipos anteriores)

(20)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica

CABAC

I. A Binarização

Tipos básicos de esquemas de binarização:

Código unário: (X: valor a binarizar) - X bits “1” seguido de um bit de fim “0”.

Ex: código unário para X= 6 => 1111110

Código unário truncado (T1):

- S: maior valor que um símbolo a binarizar pode assumir.

Logo, 0<=X<=S.

- T1 para X, se X<S é definido pelo código unário.

- Se X=S, o bit de fim “0” é negligenciado.

Ex:T1 para X=6 com S=9=>1111110 T1 para X=9 com S=9=>111111111

(21)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica

CABAC

I. A Binarização

Tipos básicos de esquemas de binarização:

Código Exp-Golomb de k-ésima ordem (EGk):

- Consiste em prefixo+sufixo

- Prefixo EGk: código unário do valor L(X) = (log2[X/2k + 1])

- Sufixo EGk: representação binária de X + 2k (1 - 2 L(X) ) usando k + L(X) bits.

Código de comprimento fixo (FL):

- Dado pela representação binária de X com um número fixo de bits dado por log2S, onde 0<=X<S

(22)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica

CABAC

I. A Binarização

Tipos básicos de esquemas de binarização:

Esquemas híbridos (concatenação dos tipos anteriores):

1. FL (prefixo)+TU (sufixo)

2. TU(prefixo) + EGk(sufixo), conhecido como UEGk(binarizações Unárias/Exp-Golomb de k-ésima ordem):

Esquema aplicado aos vetores de movimento e aos valores absolutos dos níveis de coeficientes transformados. Para pequenos valores, o código unário é aplicado.

Exemplo:Vetor de movimento

- Prefixo com binarização TU para o valor absoluto de mvd com valor de corte S=9.

- Se mvd = 0, o resultado será apenas o código de prefixo “0”.

- Se 0<|mvd|<9, o sufixo é formado apenas pelo bit de sinal:“1”

para valores de mvd negativos e “0”, caso contrário.

- Se |mvd|>=9, o sufixo é construído como uma palavra de

código EG3 para o valor |mvd|-9 e a ele é anexado o bit de sinal.

(23)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica

CABAC I. A Binarização

Tipos básicos de esquemas de binarização:

Esquemas híbridos :

2. UEGk-Exemplo:valores absolutos de coeficientes transformados (aplicado a abs_level - 1)

-Valor de corte S=14 para o prefixo TU e ordem k=0 para o sufixo EGk.

- Binarização semelhante à aplicada ao vetor de movimento, mas não tem bit de sinal anexado ao sufixo

(24)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica CABAC

II. A Modelagem de Contexto

Quatro tipos básicos de projetos de modelos de contexto:

Baseado em informações de blocos vizinhos codificados anteriormente. Usualmente, uma função é aplicada sobre os valores correspondentes dos elementos vizinhos à esquerda e acima em relação ao elemento de sintaxe corrente determinando- se o tipo de modelo de contexto para um bin específico

Baseado em bins anteriores. Os valores dos bins codificados anteriormente (b0, b1, b2, ... , bi-1) são usados na escolha do modelo para um dado bin com índice i.

(25)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica CABAC

II. A Modelagem de Contexto

Quatro tipos básicos de projetos de modelos de contexto:

Baseado na posição de escaneamento. Aplicado a dados

residuais, baseia-se na posição dos coeficientes transformados de um dado bloco após vetorização, ou seja, no índice desse vetor, representando a posição do coeficiente sendo codificado.

Baseado nos níveis codificados anteriormente. Aplicado a coeficientes transformados, envolve funções de modelagem e a avaliação do número acumulado dos níveis codificados em

relação a um valor específico.

OBS:Além dos tipos acima, existem atribuições fixas de modelos de probabilidade a índices de bins codificados no modo regular.

(26)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica CABAC

II. A Modelagem de Contexto

No CABAC existem 399 contextos, cada um deles identificado por seu índice. Os índices de contexto variam de 0 a 398. Abaixo, os elementos de sintaxe e seus intervalos associados de índice de contextos.

(27)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica CABAC

II. A Modelagem de Contexto

Exemplo: Escolha dos contextos para os bins da componente x do vetor de movimento

Através da informação de vetor de movimento dos dois blocos vizinhos a C, calcula-se ek(C), que por sua vez determina o n° do contexto a ser escolhido para o primeiro bin do vetor de movimento do bloco C.

(28)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica CABAC

III. A Codificação Aritmética Binária

A codificação aritmética tem uma maior eficiência de codificação em relação a outro métodos como Huffman.

No CABAC, a codificação aritmética binária é um mecanismo rápido baseado somente em tabelas de look-ups e deslocamento evitando-se multiplicações.

Ela permite também a adaptação simples e rápida às probabilidades dos símbolos.

(29)

Codificação por entropia no padrão H.264/MPEG4-AVC: a técnica CABAC

III. A Codificação Aritmética Binária

No início do processo de codificação, os modelos de probabilidade associados aos diferentes contextos são

inicializados com uma distribuição inicial pré-computada.

Após a codificação de cada símbolo, o contador de freqüência da decisão binária relacionada é atualizado, portanto, provendo uma nova estimativa de probabilidade para a próxima decisão de

codificação.

Quando o número total de ocorrência dos símbolos relacionados a um dado modelo excede um limite, o contador de freqüência é

escalonado para baixo. Este reescalonamento periódico faz com que observações passadas percam peso exponencialmente para que haja adaptação a características não estacionárias da fonte.

(30)

Comparação de desempenho:

CAVLC x CABAC

Economias nas taxas de bits x razão sinal-ruído .Economias

percentuais do CABAC em relação ao H.264-Perfil Baseline.

Ex: 9 a 14% de 30 a 38 dB

Comparação entre H.264/MPEG4- AVC HP e MP (ambos com

CABAC e CAVLC) e MPEG-2.

Curvas razão sinal-ruído versus taxas de bits

(31)

Conclusões

As novas técnicas de codificação por entropia CAVLC e CABAC introduzidas no padrão H.264/MPEG4 AVC foram importantes instrumentos para o desempenho e eficiência excelentes que foram alcançados por este padrão.

Pelo uso de contextos e adaptação, tais técnicas exploram a redundância entre símbolos de maneira eficiente e também se adaptam às mudanças nas probabilidades dos símbolos dinamicamente.

O CABAC, pelo uso de um maior número de contextos e

pelo uso da codificaçao aritmética consegue uma eficiência

maior na codificação, entretanto não está disponível no perfil

baseline do padrão H.264/MPEG4 AVC.

(32)

Referências

[1] (2005) Detlev Marpe, Thomas Wiegand, Stephen Gordon

“H.264/MPEG4-AVC Fidelity Range Extensions: Tools, Profiles,

Performance, and Application Areas”, IEEE International Conference on Image Processing (ICIP'05), Genova, Italy, September 2005.

[2] http://pds.cse.nsysu.edu.tw/lecture/entropy%20coding.pdf [3] (2003) Detlev Marpe, Heiko Schwarz, and Thomas Wiegand

“Context-Based Adaptive Binary Arithmetic Coding in the

H.264/AVC Video Compression Standard”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, pp. 620- 636, July 2003, Publication Award of ITG.

[4] (2001) Detlev Marpe, Gabi Blättermann, Guido Heising, and Thomas Wiegand “Video Compression Using Context-Based

Adaptive Arithmetic Coding”, IEEE International Conference on Image Processing (ICIP'01), Thessaloniki, Greece, September 2001.

[5] (2002) Iain E G Richardson “H.264 / MPEG-4 Part 10 : Variable Length Coding”, http://www.rgu.ac.uk/files/h264_vlc.pdf

Referências

Documentos relacionados

A Realidade Aumentada apresentou as seguintes vantagens: permitiu aos alunos a visualização do campo magnético girante; permitiu a interação do aluno com estes

imii lorlc demais para ser influenciado por uma pessoa indecisa. Deu-lhe inil.i i sua atenção. Com sua personalidade vibrante, com sua càpacidade de i i.ii sempre no meio do

Devido à alta taxa de novas infecções intramamárias por coliformes no período seco em vacas leiteiras, principalmente nas fases inicial e final, objetivou-se com

Esta secção é particularmente importante para o futuro troço transfronteiriço: a construção de uma nova linha deverá permitir aumentar consideravelmente a capacidade do eixo a

Nesta nota técnica, pesquisadores do Climate Policy Initiative/ Pontifícia Universidade Católica do Rio de Janeiro (CPI/ PUC-Rio) analisam a tramitação legislativa do projeto da

This is an especially good opportunity to define at what point a Preliminary Environmental License must be obtained, who must obtain it – the government or the concessionaire, and

(iv) estimate technological profile for Brazil and BLUM regions considering zoo technical indexes and calculated productivities (beef and dairy sectors); (v) estimate costs

Reduzir desmatamento, implementar o novo Código Florestal, criar uma economia da restauração, dar escala às práticas de baixo carbono na agricultura, fomentar energias renováveis