Compressão e Codificação

    Devido aos grandes débitos binários necessário para o IPTV apresentados na secção 2.1, se não se proceder a uma compressão dos mesmos isso leva a erros de transmissão. Muitas das ligações até casa das pessoas não permite débitos tão elevados como os verificados por um canal HD. Assim existem técnicas de compressão e codificação de maneira a diminuir esses débitos binários.

    Existem dois aspectos fundamentais que podem ser explorados pelas técnicas de compressão em qualquer tipo de sinal de informação: a redundância e a irrelevância. A redundância está relacionada com as semelhanças e correlações de um sinal, que permitem que diferentes formas de o representar necessitem de fazer uso de um menor número de bits. A irrelevância está relacionada com as partes da informação do sinal que são menos perceptíveis pelos sentidos do ser humano e que podem ser eliminadas sem que haja degradação da sua percepção do conteúdo. Os métodos de compressão que exploram a irrelevância são irreversíveis, uma vez que é impossível recuperar a informação eliminada. São por isso denominados métodos de compressão lossy. O mesmo não acontece com métodos que exploram apenas a redundância, que por essa razão são denominados lossless. Em vídeo, pode-se fazer a exploração da redundância espacial e da redundância temporal, sendo também imprescindível explorar a irrelevância.
    Nos dias de hoje, existem codecs bastante poderosos, nomeadamente o MPEG-4, que são capazes de comprimir cerca de 80 vezes os sinais PCM. São estes codecs que são usados pelos sistemas de IPTV para codificar os vários canais de televisão.
    Em relação à exploração da redundância espacial, tira-se partido sobretudo do facto dos conteúdos de uma imagem estarem normalmente bastante correlacionados. Significa isto que é comum numa imagem que haja grupos de pontos com valores iguais ou muito semelhantes que permitem uma representação mais eficiente da informação da imagem. A técnica usada na maior parte dos casos para explorar redundância espacial numa imagem é dividir a imagem em vários blocos e nestes aplicar a DCT (Discrete Co-sine Transform). Esta transformada é também usada para fazer a compressão de imagens no formato JPEG, onde o tamanho dos blocos aos quais é aplicada é de 8x8. Em vídeo, a DCT é também aplicada em blocos 8x8, ainda que a unidade básica de codificação seja o macrobloco (16x16). De forma breve, ao aplicarmos a DCT a um bloco estamos apenas a representá-lo como uma soma ponderada de um conjunto de blocos base, que têm o seguinte aspecto:

dct

    A vantagem desta nova representação é que se consegue separar na frequência as componentes de cada bloco. Se um bloco só contiver variações muito suaves, os coeficientes correspondentes aos blocos elementares no canto superior esquerdo da ilustração 8 terão valores mais altos. Por outro lado, se o bloco tiver variações mais rápidas, serão os coeficientes de maior frequência (canto inferior esquerdo) a ter valores elevados. Note-se que até este ponto a compressão é apenas lossless, uma vez que só se mudou a forma de representação da informação. Como o olho humano é menos sensível a variações rápidas do que a variações lentas espacialmente numa imagem, uma vez que agora os blocos se encontram separados na frequência, é fácil identificar quais as partes menos relevantes de um bloco e que podem ser eliminadas sem grande prejuízo de percepção subjectiva. Para isso é feita a quantização dos coeficientes usando passos de quantização maiores para os coeficientes que correspondem às frequências menos relevantes. Após esta quantização, é enviada a matriz destes coeficientes quantizados, que pode ser transmitida em zig-zag por forma a enviar primeiro os coeficientes das frequências mais relevantes e só depois os restantes, que por serem quantificados com passos de quantização maiores, é normal que tenham valores semelhantes. Normalmente é usado o código de Huffman para explorar a redundância na representação da matriz quantificada. De forma análoga, a redundância temporal resulta do facto de normalmente as imagens sucessivas de uma sequência de vídeo serem fortemente correlacionadas. Por isso, em vez de se codificar independentemente cada imagem, é mais eficiente codificar cada imagem com base na imagem anterior, enviando apenas a diferença entre as duas. Isto é suficiente para que na recepção se possa reconstruir a nova imagem.
    Estas são apenas algumas técnicas básicas que foram desenvolvidas nos primórdios da codificação de vídeo. Em IPTV são usadas duas normas do grupo MPEG (Motion Pictures Experts Group) para este fim, que usam estas e muitas outras técnicas cada vez mais minuciosas e que permitem obter representações dos canais de televisão a débitos aceitáveis para a rede.
    É de salientar que as normas MPEG nunca especificam o processo de codificação de um vídeo. Apenas definem as várias ferramentas que este processo pode usar e a sintaxe do fluxo de dados resultantes dessa codificação que deve ser cumprida de modo a ser descodificada de forma correcta. O processo de codificação é portanto não normativo, o que já não acontece com a descodificação, que é normativa.

struct_video

    MPEG-2

    image_mpeg

        Esta norma do grupo MPEG está dividida em dez partes no seu total, sendo relevante para a nossa análise apenas a parte MPEG-2 Vídeo.
        Em termos de técnicas de compressão, muito abreviadamente, a norma MPEG-2 Vídeo especifica um fluxo de dados para transmissão dividindo a sequência de imagem de vídeo em GOP’s (Group Of Pictures), os quais contêm imagens do tipo I, P e B (ilustração 10). As imagens I são codificadas de forma independente das outras imagens, isto é, não exploram a redundância temporal. Apenas usam a DCT para explorar a redundância espacial. Apesar de degradarem o factor de compressão total da sequência de vídeo codificada, o uso destas tramas é indispensável, nomeadamente no que toca ao acesso aleatório do vídeo e à concretização de funcionalidades típicas de um sistema de televisão moderno (recuo no tempo, pausa e retoma da sequência de vídeo, etc...). Já as imagens do tipo P têm a possibilidade de efectuar predição em imagens anteriores do tipo I ou em imagens do mesmo tipo (P). A precisão de predição no caso da norma MPEG-2 vídeo é de meio pixel, ou seja, é feita uma interpolação entre pixéis adjacentes por forma a obter valores de amostras que possam proporcionar menores diferenças de predição. Quanto às tramas B, são as que oferecem factores de compressão mais elevados pois permitem a predição baseada tanto em imagens anteriores como posteriores.
















    MPEG-4

        A sua parte 16 [2], denominada H.264/AVC é a mais recente norma de codificação de vídeo e foi desenvolvida pelos grupos MPEG e VCEG (Video Coding Experts Group) da ITU-T. A norma é intitulada AVC (Advanced Video Coding) mas por parte do ITU-T é designada por H.264.Esta norma pretende especificar a codificação de vídeo com o dobro da capacidade de compressão da norma anterior (MPEG 2) preservando a qualidade subjectiva.
    Em termos de especificações técnicas, a norma H.264/AVC usa algumas ferramentas diferentes em relação ao MPEG-2. Alguns exemplos destas novas técnicas são a compensação de movimento feita com blocos de tamanho variável, macroblocos com referências de predição em múltiplas tramas e métodos de codificação entrópica optimizados.
    É esta combinação de novas ferramentas que permite obter o tal ganho de compressão tão ambicioso a que a norma se propunha. E de facto, considerando o exemplo visto na secção 2, se o canal de televisão standard dado como exemplo fosse codificado em H.263/AVC, teria uma compressão no seu débito de cerca de 80 vezes, resultando assim para a definição standard um débito à volta de 1,5 - 2 Mbit/s e para a alta definição um débito de 5 – 10 Mbit/s dependendo do conteúdo. Em MPEG-2 os factores de compressão não são tão elevados, mas já são razoáveis. Apresentam sensivelmente débitos de 4 – 5 Mbit/s para SDTV e 15 – 20 Mbit/s para HDTV. Já é portanto possível para as redes de telecomunicações suportar estes débitos.

    comparacao_mpeg2_mpeg4

    comparacao_mpeg2_mpeg4