3. Compressão de vídeo digital

 

3.1. Técnicas de compressão do MPEG


   MPEG (Moving Picture Experts Group) refere-se à família de padrões de compressão de vídeo digital e formatos de ficheiro desenvolvidos pelo grupo da ISO (International Organization for Standardazation) [2]. O MPEG, na maioria dos casos, produz um vídeo de melhor qualidade que os formatos concorrente como o Video for Windows, Indeo e o Quicktime. Os ficheiros MPEG podem ser descodificados por hardware especial ou por software.

   O MPEG consegue uma alta taxa de compressão, guardando apenas as alterações de uma imagem para a outra, em vez de gravar cada imagem inteira. A informação do vídeo é depois codificada utilizando a técnica chamada DCT. O MPEG utiliza um tipo de compressão com perdas, uma vez que alguns dados são perdidos, mas essa diminuição de dados é geralmente imperceptível ao olho humano.

   O olho humano é mais sensível a mudanças no brilho do que a mudanças de cromaticidade. Por isso, os dados da imagem são primeiro divididos numa componente de luminância e dois de crominância, e os componentes de crominância são sub-amostrados relativamente à componente de luminância. Depois deste passo, o habitual método de compressão com perdas usado na compressão de vídeo digital é baseado em DCT (Discrete Cosine Transform) e em quantificação. Esta técnica reduz as componentes espaciais de altas-frequências da imagem, uma vez que o observador humano é mais sensível a erros de reconstrução de componentes de baixas frequências. O objectivo do passo de quantificação é representar os coeficientes DCT com a precisão que é necessária para alcançar a qualidade de imagem pretendida. O passo zig-zag mete os coeficientes de altas-frequências no fim da stream e uma vez que a maioria deles se tornaram zero depois da quantificação, o RLE (Run Length Encoding) é usado para uma maior compressão. O coeficiente do canto superior esquerdo representa o valor médio do bloco e é codificado usando a diferença do bloco anterior (DPCM). O passo final do processo de compressão é minimizar a entropia utilizando a codificação aritmética ou de Huffman. A imagem codificada é normalmente chamada I-frame (intra-frame) porque o processo de codificação não utiliza nenhuma informação de outras imagens.

 

 Figura 3.1.1 -  Diagramas de blocos de compressão de vídeo

 

   Para além da técnica de compressão anterior, a redundância temporal entre imagens pode ser utilizada para maior compressão. O método básico consiste em calcular o erro de predição entre os blocos correspondentes nas imagens actuais e nas imagens anteriores. Os valores do erro são enviados para o processo de compressão. As imagens comprimidas geradas pela predição são chamadas P-frames. Quando se utiliza tanto as imagens anteriores como as futuras como referência, a imagem é chamada B-frame (bidirectional frame).

   A predição compensada por movimento é uma ferramenta para reduzir a redundância temporal entre imagens. O conceito de compensação de movimento contém uma estimativa de movimento entre imagens de vídeo. O movimento é descrito por um pequeno número de vectores de movimento que origina uma translação de um bloco de pixels entre as imagens. Os vectores de movimento e os erros de predição comprimidos são então transmitidos.

 

 

Figura 3.1.2 – Compensação de movimento

 

   Num nível de compressão mais elevado, o bloco baseado numa transformação DCT, introduz alguns artifícios bloqueadores. Os métodos mais recentes já não precisam desta subdivisão da imagem e permitem níveis de compressão mais profundos sem estes artifícios. A transformação wavelet, uma ferramenta poderosa para comprimir informação, representa imagens como ondas que podem ser descritas matematicamente em termos de frequência, energia e tempo. A matemática avançada subjacente à transformação wavelet é muito complexa.

   A compressão fractal ganhou algum interesse global, mas até agora não apresenta benefícios em relação aos métodos baseados em DCT.


   Há três grandes tipos de padrão MPEG: MPEG-1, MPEG-2 e MPEG-4.

 

  • As implementações mais comuns do padrão MPEG-1 permitem obter uma resolução de vídeo de 352 por 240, a 30 imagens por segundo (fps). Isto significa que a qualidade de vídeo é ligeiramente inferior à qualidade dos vídeos VHS.

 

  • MPEG-2 oferece resoluções de 720x480 e 1280x720 a 60 fps, com um áudio com qualidade de CD (Compact Disc). Isto é suficiente para os principais padrões de televisão analógicos como a NTSC (National Television System Committee), PAL (Phase Alternation by Line) e SÉCAM (Séquentiel Couleur avec Mémoire) e até digitais HDTV (High-definition Television). O MPEG-2 é usado em DVD-ROMs, conseguindo comprimir um vídeo de duas horas em alguns gygabytes. Enquanto que para descomprimir dados em MPEG-2 basta um computador com modesta capacidade de processamento, a codificação de vídeo no formato MPEG-2 requer uma capacidade de processamento muito superior.

 

  • MPEG-4 é um algoritmo padrão de compressão de gráficos e vídeo, baseado na tecnologia MPEG-1, MPEG-2 e QuickTime. Os ficheiros MPEG-4 baseados em wavelet (função matemática usada na compressão de imagens) são mais pequenos do que os ficheiros JPEG (Joint Photographic Experts Group). Foram projectados para transmitir vídeo e imagens utilizando menor largura de banda e para conseguir misturar vídeo com texto, gráficos e camadas de animação em 2-D e 3-D.

 

 

3.2. MPEG-4 parte 10 AVC/H.264

 

  O MPEG-4 parte 10 AVC/H.264 é um codec digital de vídeo que consegue altas taxas de compressão. Foi desenvolvido pela ITU-T Video Coding Experts Group (VCEG) em conjunto com ISO/IEC Moving Picture Experts Group (MPEG). Esta parceria ficou conhecida como Joint Video Team (JVT).

  O H.264 é um nome dado pela ITU-T para designar padrões de vídeo de H.26x, enquanto que AVC foi o nome dado pelo ISO/IECMPEG, que completou o projecto H.26L deixado por acabar pela ITU-T.

   O projecto H.264/AVC tinha como objectivo fornecer uma boa qualidade de vídeo a débitos binários mais baixos (metade ou mais do que os anteriores precisavam para ter a mesma qualidade), mas de forma a que o aumento de complexidade não tornasse a implementação excessivamente cara. O objectivo seguinte seria tentar que este standard fosse aplicado numa grande variedade de aplicações, e que funcionasse bem para redes e sistemas como por exemplo para transmissão, armazenamento DVD, redes de pacotes RTP/IP e sistemas de telefonia multimédia ITU-T.

 

   O JVT (Joint Video Team) acabou recentemente de desenvolver algumas extensões ao padrão original conhecido como Fidelity Range Extensions (FRExt). Estas extensões suportam a codificação de vídeo de alta-fidelidade, porque suportam codificações de 10 e 12 bits e ainda alta resolução na informação de cor, incluindo estruturas de amostra conhecidas como YUV 4:2:2 e YUV 4:4:4 (sendo que o Y define a luminância, e U e V as duas crominâncias. 4:4:4 significa que todos os três canais têm o mesmo ritmo de amostra, assim cada pixel na imagem tem três palavras de informação completas de 8 ou 10 bits, resultando assim que cada pixel tem 3 bytes. 4:2:2 significa que as crominâncias têm metade do ritmo de amostra da luminância, assim a resolução de cor horizontal é também metade da de 4:4:4.).

 

 

3.2.1. Características

 

   O H.264/AVC/MPEG-4 Parte10 contém algumas características que lhe permitem comprimir vídeo de uma maneira muito mais eficiente que padrões mais antigos, e trás mais flexibilidade para aplicações em diversos ambientes de rede, como por exemplo:

 

  • Compensação de movimento multi-imagem usando imagens codificadas anteriormente como referência, permitindo usar 32 imagens de referência contra as 1 ou 2 imagens usadas em padrões anteriores. Esta característica em particular permite melhorias consideráveis no débito binário e na qualidade de imagem.

 

  • Compensação de movimento de bloco de tamanho variável com blocos 16*16 e 4*4 permitindo uma segmentação precisa de regiões de movimento.

 

  • Precisão de 1/4 de pixel para compensação de movimento, permitindo uma descrição muito precisa de deslocamentos de áreas de movimento. Para a crominância a resolução é tipicamente reduzida a metade, e portanto a precisão de compensação de movimento baixa para 1/8 de pixel.

 

  • Precisão ponderada que permite ao codificador especificar o escalonamento quando executa compensação de movimento. A performance também é melhorada para transições fade-to-black, fade-in, e cross-fade.

 

  • Codificação aritmética binária adaptável segundo o contexto (CABAC, context-adaptive binary arithmetic coding), que é uma técnica inteligente para comprimir, sem perdas, elementos de sintaxe no stream vídeo sabendo as probabilidades de elementos de sintaxe num dado contexto.

 

  • Codificação de comprimento variável adaptável segundo o contexto (CAVLC, context-adaptive variable-length coding), que é uma alternativa de baixa complexidade ao CABAC para a codificação de  valores de coeficientes quantificados. Embora tenha uma complexidade mais baixa do que CABAC, CAVLC é mais elaborada e mais eficiente do que os métodos usados tipicamente para codificar coeficientes noutros projectos prévios.

 

  • Uma definição de camada de abstracção de rede (NAL, network abstraction layer) permitindo que a mesma sintaxe vídeo seja usada em muitos ambientes de rede, incluindo características tais como grupos de parâmetro de sequência (SPSs, sequence parameter sets) e grupos de parâmetro de imagem (PPSs, picture parameter sets) que fornecem mais robustez e flexibilidade do que aquele fornecido em projectos anteriores.

 

  • As fatias de comutação (chamadas fatias de SP e de SI), permitem que um codificador faça com que um descodificador salte um stream de vídeo, para mudança de débito binário do streaming do vídeo e para a operação "trick mode". Quando um descodificador salta para o meio de um stream de vídeo usando a função SP/SI, pode conseguir uma igualdade nas imagens descodificadas nessa posição no stream de vídeo apesar de usar imagens diferentes (ou nenhumas imagens) como referências antes do interruptor.

 

  • Ordenação de macroblocos flexível (FMO, flexible macroblock ordering) e ordenação arbitrária de fatias (ASO, arbitrary slice ordering), são técnicas para reestruturar a maneira como se representa a ordenação das regiões fundamentais (chamadas macroblocos) nas imagens. Considerada tipicamente uma característica de robustez de erros/perdas, FMO e ASO também podem ser usados para outras finalidades.

 

  • Partição de dados (DP, data partitioning), uma característica que permite separar elementos mais importantes e menos importantes da sintaxe em diferentes pacotes de dados, possibilitando a aplicação da protecção de erro desigual (UEP, unequal error protection) e outros tipos de melhoria da robustez de erros/perdas.

 

  • Fatias redundantes (RS, redundant slices), uma característica de robustez de erros/perda que permite que um codificador emita uma representação extra de uma região da imagem (tipicamente de baixa fidelidade) para poder ser usada se a representação preliminar estiver corrompida ou perdida.

 

  • Um processo automático simples para impedir a emulação acidental dos códigos iniciais, que são sequências especiais de bits nos dados codificados que permitem o acesso aleatório no bitstream e a recuperação do alinhamento de bytes em sistemas que podem perder a sincronização de byte.

 

  • Imagens auxiliares, que podem ser usados para finalidades como o alpha compositing.

 

  • Frame numbering, uma característica que permite a criação de "sub-sequências", a detecção e o esconder de perdas dos retratos inteiros (que podem ocorrer devido às perdas de pacotes da rede ou aos erros de canal).

 

  • Contagem da ordem da imagem, uma característica que serve para manter a ordem das imagens e dos valores das amostras das imagens descodificadas isoladas da informação de sincronismo (permitindo que a informação de sincronismo seja transportada e controlada/modificada separadamente por um sistema sem afectar o conteúdo descodificado da imagem).

 

   Estas técnicas, junto com muitas outras, ajudam o H.264 a ter uma performance significativamente melhor do que qualquer outro padrão anterior. O H.264 pode ter uma performance radicalmente melhor do que MPEG-2 vídeo (tipicamente obtém a mesma qualidade mas com metade, ou menos de metade, do débito binário).

   Assim como outros padrões vídeo do MPEG ISO/IEC, o H.264/AVC tem uma implementação de software de referência que pode ser descarregada livremente Internet. Alguns trabalhos de projecto de hardware estão a ser realizados, tendo em vista a integração do MPEG.

 


3.3. Codec’s de vídeo


3.3.1. DivX


   O codec (compression/decompression) DivX ;-) original não foi desenvolvido de raiz, era uma versão “hacked” do codec de vídeo WMV (Windows Media Vídeo) da Microsoft. A última versão oficial do codec feita pelo hacker ficou conhecida por DivX ;-) v3.11 alpha e tornou-se bastante popular em todo o Mundo.

   Depois deste sucesso, um grupo de pessoas, incluindo o hacker por detrás do codec DivX ;-), começou a desenvolver uma versão legal do codec. Este projecto de open source (quando o código fonte é publicado e disponibilizado para o público, permitindo a qualquer um fazer uma cópia, modificar e redistribuir o código fonte sem pagar pelos direitos ou taxas) era conhecido por Project Mayo ou OpenDivX. Depois de o codec já ser mais consistente decidiu criar uma empresa chamada DivxNetworks que começou a desenvolver o seu próprio codec closed source (termo usado para referir programas cujas licenças não se qualificam como open source) baseado no trabalho do Project Mayo.

   Um projecto de codec (compression/decompression) de vídeo open source MPEG-4 foi lançado em 2001 para dar continuidade ao codec DivX, open source, da Project Mayo.

   DivX® é o nome da marca de uma popular tecnologia de compressão de vídeo. DivX é um codec, software que comprime vídeo proveniente de praticamente qualquer fonte para um tamanho que é transportável pela Internet sem reduzir significativamente a qualidade visual do vídeo original.

   Com a tecnologia de vídeo DivX, é possível comprimir uma cassete VHS para 1% do seu tamanho original e um DVD para 10%. A compressão de vídeo DivX é tão eficiente que é possível meter todos os conteúdos de um DVD num CD normal sem perdas significativas de qualidade. É, assim, possível partilhar conteúdos de vídeo digital sem ser preciso grande capacidade de armazenamento, o que levanta questões de protecção de direitos de autor quando são feitas cópias ilegais.

   Antes do aparecimento do DivX, em 2001, o vídeo na Internet era de baixa resolução e de pobre qualidade. Agora é possível os fornecedores de conteúdos de vídeo terem uma verdadeira solução para distribuir as suas criações para o Mundo sem sacrificar qualidade visual ou ter mais custos com largura de banda extra. De acordo com [3], milhões de pessoas em todo o Mundo já utilizam ligações de Internet de banda larga para fazerem download de filmes em menos tempo do que aquele que é necessário para ver o filme.


3.3.2. XviD

 

    XviD é um codec open-source de vídeo de MPEG-4 originalmente baseado no OpenDivX. O XviD foi iniciado por um grupo de programadores voluntários, depois do OpenDivX ter passado a closed source, em Julho de 2001.

   As características do XviD passam pelas características MPEG-4 Advanced Simple Profile como as b-frames (um projecto de compressão de vídeo), compensação de movimento global e um quarto de pixel, lumi masking (técnica que reduz a qualidade em zonas muito claras ou muito escuras da imagem, zonas onde a perda de qualidade é menos perceptível), quantificação de Trellis, e H.263 (um codec de vídeo projectado como uma solução de codificação de baixo débito binário para a videoconferência), MPEG e matrizes de quantificação.

 

   XviD é o principal “concorrente” do DivX (XviD escrito ao contrário). Enquanto o DivX é closed source e foi projectado para o sistema operativo Windows, o XviD é open source e é compatível com muitas plataformas, incluindo o Windows e Linux.