O que é codificação de vídeo? Explicar com um exemplo?
Primeiro, vamos olhar para o nosso objectivo aqui. A codificação de vídeo ou melhor, a compressão é um dos componentes mais complexos de qualquer sistema multimídia. O vídeo ou melhor, o conteúdo visual é muito grande. O olho humano percebe as cores com base na luz que cai sobre as hastes e cones dentro do nosso olho. Esta simples imagem 2D (a.k.a. frame) é o que é normalmente referido como conteúdo de textura. O vídeo é como um livro de animação, ou seja, uma série de imagens sendo reconhecidas a uma determinada velocidade ou mais comumente conhecida como taxa. Então, o olho está realmente reconhecendo essas texturas 2D a uma determinada velocidade (Frame Rate) e transmitindo essa informação ao cérebro para interpretar o mesmo que dados em movimento.Agora, vamos ver por que é necessária a compressão? Vamos levar nossa TV HD comum ou uma tela de filme HD onde vemos filmes. Sentimos que as imagens estão em movimento contínuo. Para simplificar, vou considerar que a taxa é de 30 quadros por segundo (as telas de filmes empregam 24 fps).
P>Vamos calcular a quantidade de dados.
Total Data per second = HD frame x 30 fps = 1920 x 1080 x 3 x 30 (onde HD = 1920 x 1080 resolução, cada pixel carregando informações de cor sendo representado por 3 bytes - 24bpp)
= ~178 MBytes / segundo
Se considerarmos um filme de 3 horas, o armazenamento total necessário é de ~1878 GBytes. Isso é muito espaço..
Se tivermos de transmitir os dados através de uma rede ou armazená-los num dispositivo, temos literalmente um enorme problema à mão!!!
A Compressão/Encodificação de vídeo resolve isto. Ele emprega um certo conjunto de algoritmos para representar o mesmo conteúdo num espaço muito reduzido com quase a mesma qualidade dos dados brutos.
Video Compression/Encoding aborda isso. A maioria dos codificadores de vídeo usa um conjunto similar de etapas de processamento. Eu recomendaria consultar esta imagem para a seguinte explicação. O princípio geral da compressão visual é reduzir a quantidade de armazenamento aproveitando as redundâncias.
P>Primeiro, vamos olhar para uma imagem simples. A imagem é dividida em blocos de 16x16 (também conhecidos como Macroblocos / MB) para facilitar o processamento. Cada MB está ligado aos seus vizinhos locais, pois todos eles são como pequenos pedaços de mosaico de uma imagem maior.
Um dos primeiros passos na compressão Visual é aproveitar a correlação entre os vizinhos espaciais. Este é também o mesmo princípio orientador da Intra Predição.
Simplesmente, 2 imagens sucessivas também têm muito em comum, a correlação entre vizinhos temporais é aproveitada através da Estimação de Movimento.
Sair de qualquer um destes 2 processos, obtemos um conjunto de preditores / vetores de movimento e diferenças w.r.t a referência, ou seja, o sinal de erro delta, que não é nada mais que conteúdo de textura em forma diferencial.
Então, obtivemos um conjunto de redução no espaço. Em seguida, precisamos codificar estes diferentes componentes de tal forma que possa ser reconstruído com precisão usando um processo inverso.
O sinal de erro de dados precisa ser comprimido a seguir. Para conseguir isso, outra função de correlação é empregada para identificar identificadores únicos para representar os dados. Isto é conseguido através de uma função de transformação, que é principalmente uma forma de DCT.
Out de transformação, temos um conjunto de identificadores únicos e pequenas diferenças em torno deles. Estes são os próximos quantizados para caber num conjunto representativo de níveis. O que este processo também faz é converter as pequenas diferenças de franja para zero.
Também podemos notar que há uma pequena perda de informação, mas nada que tenha impacto na aparência geral do vídeo.
Os coeficientes quantificados seriam um conjunto de identificadores únicos e uma cadeia de zeros. Estes são então codificados usando esquemas de codificação especiais para otimizar o número de bits a serem transmitidos. Uma regra simples para a codificação é "Use um número mínimo de bits para os elementos mais comuns" (Nota: O mesmo princípio pode ser encontrado no telégrafo onde "e" é representado por um ponto). Este processo é chamado de codificação de comprimento variável, cuja saída é o bitstream real que é armazenado ou transmitido.
Este bitstream é submetido a um processo inverso chamado "Decodificação" para recriar o conteúdo real. Isto resume os passos gerais de compressão de vídeo.
Nota: Há mais um aspecto da compressão onde os dados RGB24 são convertidos para YUV420 o que por si só reduz os dados pela metade. Entretanto, como este tópico já está coberto em diferentes tópicos, eu dei o mesmo salto.