O que são quadros MPEG I, P e B?


8

Recentemente, eu estava revisando artigos e vídeos em MPEG para entender como ele funciona. Entendo o que os quadros I, P e B fazem, mas não entendo como a previsão é calculada.
Suponha que eu queira gravar um vídeo de uma bola caindo do céu para o chão e depois saltando algumas vezes antes de finalmente parar.
Além disso, não estou claro com o conceito do macrobloco de 16x16. Por favor, diga:

  • como a previsão é calculada
  • o que é macrobloco e como ele ajuda na codificação MPEG

  • Minhas referências:
  • Previsão MPEG
  • Vídeo na conversão MPEG
  • Respostas:


    14

    Resposta curta :
    Blocos são unidades para comparação entre quadros;
    A previsão é baseada na quantidade de blocos apresentados nas imagens anteriores e nas seguintes;

    Resposta mais longa :
    como entrada, um codificador de vídeo não recebe mais nada além de uma sequência de quadros .
    Na maioria dos casos, os quadros adjacentes são muito semelhantes entre si, e o codificador tenta descobrir se esses quadros são realmente semelhantes.

    Como você diz se duas imagens são semelhantes?

    • Ambas as imagens são divididas em macroblocos (você não pode comparar imagens inteiras, elas certamente diferem!)
    • O algoritmo tenta descobrir se existe um bloco da imagem anterior na imagem a seguir (dentro de uma certa proximidade da sua posição original)
    • Se, até um certo limite, a maioria dos blocos presentes na imagem a seguir, a imagem a seguir for computada como uma diferença da anterior ( P-frame);
      • Obviamente, blocos diferentes são codificados como estão;
    • Caso contrário, a imagem a seguir é considerada pertencente a outra cena e não há outra maneira além de mantê-la inteiramente ( I-frame).

    Para entender como a previsão funciona, dê uma olhada nesta imagem. Ele é criado por um deshakerplug-in VirtualDube usado para uma finalidade diferente (detecção de trepidação da câmera), mas parece muito representativo:

    Deshaker

    As setas indicam como a imagem atual difere da imagem anterior;
    O quadro inteiro é dividido em macroblocos (maiores que 16x16, no entanto);
    A diferença para cada bloco, comparada à imagem anterior, é um vetor de movimento ;
    Como você vê, a maioria dos macroblocos (setas brancas) segue o padrão comum e, portanto, eles podem ser codificados aplicando apenas uma matriz de transposição a um quadro anterior .
    No entanto, existem alguns blocos (setas vermelhas) que não cumprem o padrão comum e, portanto , devem ser codificados como estão .
    Obviamente, se tudo estiver vermelho, não há outra opção senão a codificação de todo o quadro como está.

    Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
    Licensed under cc by-sa 3.0 with attribution required.