O Que é Keyframe de um DivX;-)?

No tutorial em que ensinei a criar o DivX;-) a partir de um DVD eu falei apenas o essencial para que você criasse o seu primeiro arquivo neste formato. Na ocasião eu disse apenas para que você usasse um "keyframe" por segundo e não expliquei o motivo disso. Vejamos agora o que é um "keyframe" e porque é bom colocar um "keyframe" a cada segundo de filme.
Como sabemos os algoritmos de compressão procuram redundâncias nos arquivos. Façamos um esforço de simplificação e suponha que você criou um arquivo de texto puro com um milhão de letras "A" (AAAAAAAAAAAAA....AAAA) este arquivo ocuparia cerca de um megabyte, no entanto se você utilizar um programa compressor (um PkZip, por exemplo) este arquivo ocupará poucos bytes, porquê? Porque o algoritmo de compressão analisou o arquivo e verificou que o número de redundâncias era enorme, assim, para armazená-lo no modo comprimido o programa compressor cria um arquivo que NÃO tem a letra "A" repetida um milhão de vezes, mas apenas a instrução "repita A um milhão de vezes". Quando o arquivo for descomprimido o programa descompressor usará estas instruções para recriar o formato original, repetindo um milhão de "A" em um arquivo de texto.
A compressão DivX;-) Mpeg-4 não é muito diferente em temos de princípios da compressão de um arquivo de texto, são procuradas redundâncias nas imagens. Um filme é uma seqüência de quadros (frames) apresentados sucessivamente numa freqüência predeterminada, por ex, 29,97 quadros por segundo. Em um filme, sem compressão ou em formato analógico, como as fitas de cinema, cada quadro é composto por uma imagem completa, uma fotografia de um determinado instante, o quadro seguinte é uma outra fotografia de um instante alguns centésimos de segundo depois e assim por diante. No entanto observe que na maioria dos casos as diferenças entre um "frame" e o seguinte são diminutas. Suponhamos uma cena com um apresentador de TV, por exemplo, cada quadro tem exatamente o mesmo fundo, o rosto é o mesmo, apenas alguns detalhes mudam de quadro para quadro, sua boca pode estar em uma posição ligeiramente diferente e seus olhos também, o restante provavelmente será idêntico. O que faz então a compressão DivX;-) Mpeg-4, ela analisa quadro por quadro as diferenças e redundâncias entre um "frame" e o anterior.
DivX;-) Mpeg-4 trata os quadros em blocos de 16x16 pixels, a compressão compara um bloco de 16x16 pixels de um dado quadro com o bloco de 16x16 pixels do quadro anterior localizado nas mesmas coordenadas, se as diferenças forem desprezíveis (aí depende também do bitrate) o compressor considera o bloco como sendo idêntico e o descarta, aproveitando o bloco do quadro anterior e assim por diante. Desta forma cada quadro do filme comprimido tem apenas os blocos de 16x16 pixels que são diferentes do quadro anterior. O que aconteceria com aquele suposto filme com nosso apresentador de TV? Apenas o primeiro quadro teria a cena completa com a imagem de fundo, etc. Supondo que durante toda a apresentação apenas os olhos e a boca do apresentador se moveram todos os demais quadros seriam apenas blocos de pixels contendo apenas os olhos e a boca do apresentador em suas pequenas alterações, nada mais, pois todo o resto da imagem seria redundante. O milésimo quadro do filme estaria usando o fundo que está apenas no primeiro quadro!!!! Acumularia aí as informações dos blocos de pixels contidas em todos os outros quadros anteriores e adicionaria os blocos de pixels do milésimo quadro. Observe que apesar do filme estar altamente comprimido em DivX;-) Mpeg-4 para que a cena do milésimo quadro seja formada as informações de todos os 999 quadros anteriores são levadas em consideração e o fundo está apenas no primeiro quadro. Este primeiro quadro, que tem a imagem completa chamamos de "keyframe"!

 

1

2

3

4

 

 

 

É vedada a cópia total ou parcial deste artigo sem a expressa concordância do autor.