Especificação



Baixar 2,81 Mb.
Página3/24
Encontro01.07.2018
Tamanho2,81 Mb.
1   2   3   4   5   6   7   8   9   ...   24

2.2 Melhorias adotadas no padrão H.264


Em 1998, a proposta do padrão H.264/AVC era dobrar a eficiência de codificação em relação a qualquer outro padrão de codificação de vídeo [6], o que significaria dividir pela metade a taxa de bit necessária dado um certo nível de fidelidade.

O padrão H.264/AVC possibilita essa maior eficiência por meio de melhorias nos processos de codificação de vídeo existentes em padrões anteriores. As próximas seções descrevem brevemente as melhorias propostas e no Anexo A há uma tabela descrevendo quais desses elementos técnicos estão disponíveis a cada perfil. As melhorias que fazem parte do perfil Baseline serão abordadas novamente no capítulo 5, que descreve nosso código.


      1. 2.2.1 Mudanças essenciais


O padrão H.264 define todo um novo conjunto de divisões de cada quadro do vídeo. Fatias, Macroblocos e Blocos continuam existindo, tal como nos padrões anteriores. Todavia, a forma como eles funcionam foi alterada.



        1. 2.2.1.1 Mudança na unidade espacial

A fatia (ou slice) tem grande importância no H.264 uma vez que agora ela é o elemento espacial independente básico [26].

No padrão H.262 (MPEG-2) há três tipos de quadros: I, P e B [15]. Esses tipos são determinados pela forma como os macroblocos do quadro foram codificados e, consequentemente, quais informações eles vão necessitar para serem decodificados. Quadros I são codificados sem fazer referência a qualquer outro quadro, usando apenas informações presentes neles mesmos. Quadros P usam informações de um outro quadro de referência preditas por meio da compensação de movimento. Quadros B usam informações preditas de mais de um quadro de referência (um antes e outro depois, por isso é bidirecional).

No padrão H.264 os tipos I, P e B foram deslocados do nível de Quadro para o nível de Fatia. Dessa forma, existem fatias I, fatias P e fatias B, além de serem adicionados dois novos tipos de fatias: switching I pictures (SI) e switching P pictures (SP). Essas novas fatias visam reduzir significativamente a taxa de bits resultante da compressão.

Para suprir a ausência de um quadro intra codificado – decorrente, por exemplo, de peradas de pacotes na rede – foi adicionado o quadro IDR, um quadro codificado contendo apenas fatias I ou SI e que serve como referência primária para os outros quadros.


      1. 2.2.2 Melhorias no Modelo Temporal


Esta seção descreve brevemente os aspectos técnicos propostos pelo padrão para melhoria na habilidade de predizer os valores do conteúdo de um quadro a ser codificado.



        1. 2.2.2.1 Compensação de Movimento com Blocos de Tamanho Variável (VBSMC)

Permite uma segmentação mais precisa das regiões de movimento de um quadro por meio de blocos com tamanhos variando entre 16x16 e 4x4.



        1. 2.2.2.2 Compensação de Movimento com amostras precisão de ¼ de pixel (Qpel)

Possibilitam descrições mais precisas de deslocamento de áreas de movimento com precisão de até um quarto de pixel.



        1. 2.2.2.3 Vetores de movimento além dos limites do quadro

No H.264/AVC é possível ao vetor de movimento apontar para áreas fora dos limites do quadro usado como referência.



        1. 2.2.2.4 Múltiplos Quadros de Referência

Uma novidade neste padrão é a possibilidade de quadros com Compensação de Movimento poderem fazer referência não apenas a um quadro, tal como no MPEG-2, mas que seja escolhido um dentre uma lista. Isso possibilita um significativo ganho de compressão quando o vídeo apresenta movimentos periódicos.

Quadros P podem fazer referência a N quadros da lista 0; Quadros B podem ser usados como referência para outros quadros e usam quantidade arbitrária de quadros de referência da lista 0 e 1.

        1. 2.2.2.5 Filtro Anti-Blocagem

Baseado no parâmetro de quantização, no modo de compressão e no movimento em uma cena, o Filtro Anti-Blocagem permite diferenciar artefatos de compressão (por exemplo as bordas quadradas dos blocos) do conteúdo da cena. Ele proporciona uma melhoria substancial nas qualidades objetiva e subjetiva do vídeo principalmente através da suavização das boradas dos blocos, reduzindo os artefatos típicos de vídeos codificados.



        1. 2.2.2.6 Predição com peso (Weighted Prediction)

Além de especificar o deslocamento do vetor de movimento (i.e. quantos pixels uma área deve ser deslocada), no padrão H.264/AVC é possível especificar a dimensão do vetor, aumentando significativamente desempenho em casos especiais, tal como transições fade-to-black, fade-in e cross-fade.

Este recurso não está presente no perfil Baseline.


      1. 2.2.3 Melhorias no Modelo Espacial


Além das melhorias propostas no método de predição, foram aprimorados os processos de transformada, quantização e codificação de entropia.

Nesta seção serão apresentadas as melhorias na trasnformada e na quantização.

        1. 2.2.3.1 Predição espacial (predição intra quadro)

Da mesma forma como é feita a predição temporal – que utiliza amostras de quadros anteriores previamente decodificadas para predizer os valores das amostras do quadro sendo decodificado – a predição espacial utiliza amostras decodificadas do mesmo quadro para predizer os valores das amostras que estão sendo codificadas.

A predição espacial é uma técnica comum na codificação de imagens estáticas, tal como JPEG.

        1. 2.2.3.2 Transformada com bloco de tamanho menor

Enquanto os padrões anteriores realizam a transformada em blocos de 8x8, o H.264/AVC baseia-se principalmente em transformadas sobre blocos de 4x4, visando acompanhar a diminuição do tamanho dos blocos na predição. Isso permite diminuir os artefatos de blocos e também manter maior nível de detalhes na cena.



        1. 2.2.3.3 Transformada de bloco hierárquico

Em casos especiais é possível aplicar uma transformada Hadamard 2×2, 2×4 ou 4×4 nos coeficientes DC (de mais baixa frequência) dos blocos 4×4. Essa transformação extra estende a transformada 4×4 para os tamanhos 8×8, 8×16 (utilizadas para as amostras croma de um MB) ou 16×16 (utilizada para as amostras de um MB Intra especial denominado Intra_16×16).



        1. 2.2.3.4 Transformada com palavra de pequeno comprimento

O padrão H.264/AVC utiliza palavras de 16 bits para aritmética, ao invés das palavras de 32 bits utilizadas nos padrões anteriores. Isso reduz a carga computacional das operações tanto no codificador quanto no decodificador.



        1. 2.2.3.5 Transformada inversa exata

Nos padrões anteriores não era possível obter um transformada inversa exata, apenas um limite de tolerância a erros, resultando em diferença na qualidade do vídeo decodificado entre as várias implementações.

O padrão H.264/AVC é o primeiro padrão a obter a mesma qualidade de vídeo decodificado entre as várias implementações de decodificadores [6], tudo graças à transformada DCT1 ser realizada sobre números inteiros ao invés de números de ponto flutuante. Tal como é apresentado em [33], transformação e quantização sobre números reais causam erros de precisão entre o codificador e o decodificador, além de serem mais difíceis de implementar e custosas para processar.


      1. 2.2.4 Melhorias na Codificação por Entropia


Esta seção apresenta todos os métodos de codificação por entropia disponíveis no padrão H.264/AVC, entretanto, no perfil Baseline (o qual é implementado pelo presente trabalho), os coeficientes da transformada são codificados usando CAVLC2 e todos os outros elementos de sintaxe são codificados usando códigos de largura fixa ou Exp-Golomb de largura variável.



        1. 2.2.4.1 Context Adaptive Variable Length Coding (CAVLC)

A Codificação de Largura Variável (CAVLC) mapeia uma série de símbolos de entrada para uma série de códigos de tamanho variável. Símbolos que ocorrem com maior frequência são mapeados para códigos com tamanho menor e símbolos menos frequentes são mapeados para códigos de tamanho maior.

O mapeamento entre valor real e código é feita utilizando uma tabela. No H.264/AVC foi incluída uma forma aprimorada da CAVLC, que determina qual a melhor tabela de mapeamento usar de acordo com o contexto. Assim, essa codificação é adaptável ao contexto.

        1. 2.2.4.2 Context Adaptive Binary Arithmetic Coding (CABAC)

Um avançado método de codificação por entropia conhecido como Codificação Aritmética Binária Adaptável ao Contexto (CABAC) foi incluído no H.264/AVC que permite atribuir um tamanho não-inteiro (como 2,5 bits ao invés de 2 ou 3 bits) a um código (os códigos usados pela VLC são sempre de largura inteira).

A CABAC é superior às codificações baseadas em Huffman em diversos aspectos [38], e se baseia na subdivisão recursiva de intervalos de números, sendo que a distribuição dos intervalos corresponde à distribuição de probabilidade dos símbolos.

Ela é binária pelo fato de transformar qualquer valor em binário antes da codificação aritmética e adaptável ao contexto porque seleciona o modelo de probabilidade de cada elemento de sintaxe baseado em seu contexto, adaptando a probabilidade baseada nas estatísticas locais.

A codificação CABAC consegue, em média, reduzir a taxa de bit de 9% a 14% em relação ao CAVLC (sem degradação na qualidade, uma vez que codificação por entropia é sem perda) [37].

Este recurso não está presente no perfil Baseline.



        1. 2.2.4.3 Exponecial Golomb Variable Length Coding (Exp-Golomb)

Exp-Golomb é uma codificação ideal quando valores pequenos têm uma grande freqüência. Nela, o tamanho do código é proporcional ao valor a ser codificado e consiste de duas partes: uma codificação unária de tamanho variável e uma codificação binária de tamanho fixo (dado pelo valor da codificação unária).




      1. 2.2.5 Melhorias na Robustez e Transporte


Os itens destacados nesta seção fazem parte das melhorias para evitar perda e erros em dados, além daquelas que possibilitam maior flexibilidade para operar em diversos ambientes de rede. Essas melhorias não representam mudanças no codificador de vídeo propriamente dito, VCL, mas na camada de abstração de rede, NAL.



        1. 2.2.5.1 Fatias SI e SP

Esses quadros permitem intercâmbio e sincronização entre quadros, sendo SI de Switching I e SP de Switching P.

Este recurso não está presente no perfil Baseline.

        1. 2.2.5.2 Seqüência Flexível de Macrobloco (FMO)

Essa nova característica permite que cada fatia de um quadro seja decodificada independentemente das outras fatias do mesmo quadro.



        1. 2.2.5.3 Seqüência Arbitrária de Fatia (ASO)

Devido ao fato de cada fatia de um quadro poder ser decodificada independentemente das outras fatias do mesmo quadro, é possível enviar e receber as fatias de um quadro em qualquer ordem relacionada as outras fatias do mesmo quadro. Isso possibilita uma menor espera fim-a-fim em aplicações de tempo real distribuídas, particularmente quando usadas em redes com entrega de pacotes sem ordenação, tal como os protocolos da Internet.



        1. 2.2.5.4 Fatias Redundantes (RS)

O codificador H.264/AVC possui a habilidade de enviar representações redundantes de regiões de um quadro, fornecendo uma cópia de segurança das regiões de uma figura que foram perdidas durante a transmissão.



        1. 2.2.5.5 Particionamento de Dado (DP)

O particionamento de dado permite que um codificador reorganize o dado codificado em um pacote de vídeo, de modo a reduzir o impacto na transmissão de erros, colocando dados mais importantes em partições distintas dos dados menos importantes.






1   2   3   4   5   6   7   8   9   ...   24


©livred.info 2017
enviar mensagem

    Página principal