A análise estatística dos sinais de vídeo revelou que existe uma forte correlação entre imagens consecutivas e que dentro dos próprios elementos da imagem também existe uma forte correlação. Através da redução da correlação consegue-se teoricamente comprimir a largura de banda necessária para emitir estes sinais, sem que a resolução da imagem seja significativamente afectada.
Além disso, ainda se consegue ganhos de compressão maiores, se tiver em atenção a insensibilidade do sistema visual humano à perda de informação espaço - temporal. Logo, técnicas de compressão “lossy” podem ser utilizadas sem que se perca a qualidade subjectiva do vídeo.
Em todas as normas de codificação de vídeo são utilizadas três técnicas fundamentais de redução de redundância:
1) Redução de Redundância Espacial: de modo a reduzir a redundância espacial entre pixels da mesma imagem, aplica-se por exemplo a codificação por transformada (DCT). Este tipo de codificação é denominado por Intraframe (sendo a base da compressão JPEG). Tipos de codificação:
1.1) Codificação preditiva;
1.2) Codificação de Transformada.
2) Redução da Redundância Temporal: de modo a remover as semelhanças entre imagens sucessivas, codificando as suas diferenças. Este tipo de codificação é denominado por Interframe (A codificação Interframe preditiva é utilizada em todos as normas de vídeo). Tipos de codificação:
2.1) Compensação de movimento;
2.2) Compensação Rápida de movimento;
2.3) Compensação de movimento Hierárquica.
3) Codificação Entropica: de modo a reduzir a redundância entre a informação comprimida, usando técnicas de codificação de tamanho variável. Por exemplo, a codificação de Huffman. Tipos de codificação:
3.1) Codificação de Huffman;
3.2) Codificação Aritmética.
4) Codec de Interframe Genérico:
Ilustração 1 - Diagrama de Blocos de um Codificador Interframe Genérico.
De seguida descreve-se a função de cada um dos blocos:
4.1) Loop de Interframe
Na codificação interframe preditiva, a diferença entre os pixels da imagem actual e dos valores preditivos da imagem anterior são codificados e depois são transmitidos. No descodificador depois de descodificado o erro de sinal de cada pixel, este é somado a um valor similar de predição de modo a reconstruir a imagem. Ou seja, quanto melhor for o preditor, mais pequeno é o erro de sinal, e também o bit rate de transmissão. Se a cena for parada, uma boa predição do pixel actual é o mesmo pixel da imagem anterior. No entanto quando existe movimento, assumindo que o movimento da imagem é só a alteração da posição de um objecto, é o pixel da imagem anterior deslocado por um MV.
4.2) Compensação de movimento / Estimador de movimento
Atribuir o MV (motion vector) a cada pixel é muito caro. Em vez disso, atribui-se um MV a um grupo de pixels, de modo a que o overheading devido ao MV por pixel seja menor. Nos codecs standard, o movimento dum bloco de 16 x 16 pixels, denominado por MB (macrobloco), é estimado e compensado. A estimação de movimento só é feita para a luminância da imagem. Sendo utilizada para os blocos de crominância uma versão escalada desse mesmo MV, dependendo do formato da imagem.
4.3) Inter/Intra Switch
Cada MB está codificado inter/intraframe, denominados então por inter/intra MBs. A decisão sobre qual o tipo de MB depende da técnica de codificação.
4.4) DCT
Todos os MB estão divididos em 8 x 8 blocos de pixels de luminância e crominância. Depois cada bloco é transformado via o DCT. Existe 4 blocos de luminância em cada MB, no entanto o número de blocos de crominância depende da resolução de cor (formato da imagem).
4.5) Quantificador
Existem 2 tipos de quantificadores. Um com “dead zone” usado com os coeficientes AC e coeficientes DC do MB inter. Outro sem “dead zone” usado para os coeficientes DC do MB intra. A variação dos quantificadores pode ser de -2047 até 2047. Num quantificador “dead zone”, se o módulo (valor absoluto) de um coeficiente for menor que o tamanho do passo de quantificação q, então este é posto a zero, senão é quantificado de acordo com,
,
de modo a gerar índices de quantificação. Os índices de quantização têm valores entre 1 e 31.
4.6) Codificador de tamanho variável
Os índices de quantificação são codificados com tamanho variável, de acordo com o tipo de VLC (variable length coding) usado. Os vectores de compensação de movimento e os endereços dos MBs codificados são codificados com VLC.
4.7) IQ e IDCT
De modo a gerar uma predição para a codificação interframe, os coeficientes DCT são primeiro inversamente quantificados e inversamente codificados por DCT. Estes são depois adicionados aos valores da imagem anterior (depois de um atraso no frame store), de modo a gerar uma réplica da imagem descodificada. A imagem é depois usada como predição para a codificação da próxima imagem da sequência.
4.8) Buffer
O bit rate gerado por um codificador interframe é variável. Isto deve-se a que o bit rate é primariamente uma função da actividade da imagem (movimento dos objectos e do seu detalhe). Logo, para transmitir vídeo codificado para um canal de ritmo fixo, este tem que ser regulado. Armazenar os dados codificados no buffer e depois esvazia-lo ao ritmo do canal realiza esta função. No entanto, se actividade na imagem for tal que o buffer possa sofrer um overflow, então, existe um feedback do buffer para o quantizador de modo a controlar o bit rate. Ou seja, no caso em que existe muito movimento na imagem, o buffer actua no quantizador na medida em que este aumenta o passo, no caso em que existe pouco movimento o quantizador é actuado de modo a reduzir o passo, que consequentemente vai aumentar a qualidade da imagem. Este método de codificação é chamado codificação de bit rate constante (CBR