Quadro interno - Inter frame

Um interquadro é um quadro em um fluxo de compressão de vídeo que é expresso em termos de um ou mais quadros vizinhos. A parte "inter" do termo refere-se ao uso da previsão de quadros Inter . Esse tipo de previsão tenta tirar vantagem da redundância temporal entre os quadros vizinhos, permitindo taxas de compressão mais altas.

Predição interframe

Um quadro codificado inter é dividido em blocos conhecidos como macroblocos . Depois disso, em vez de codificar diretamente os valores de pixel brutos para cada bloco, o codificador tentará encontrar um bloco semelhante ao que está codificando em um quadro codificado anteriormente, denominado quadro de referência . Este processo é feito por um algoritmo de correspondência de blocos . Se o codificador for bem-sucedido em sua busca, o bloco pode ser codificado por um vetor, conhecido como vetor de movimento , que aponta para a posição do bloco correspondente no quadro de referência. O processo de determinação do vetor de movimento é chamado de estimativa de movimento .

Na maioria dos casos, o codificador será bem-sucedido, mas o bloco encontrado provavelmente não corresponde exatamente ao bloco que está codificando. É por isso que o codificador calculará as diferenças entre eles. Esses valores residuais são conhecidos como erro de predição e precisam ser transformados e enviados ao decodificador.

Resumindo, se o codificador conseguir encontrar um bloco compatível em um quadro de referência, ele obterá um vetor de movimento apontando para o bloco compatível e um erro de predição. Usando ambos os elementos, o decodificador será capaz de recuperar os pixels brutos do bloco. A imagem a seguir mostra todo o processo graficamente:

Processo de previsão entre quadros. Neste caso, houve uma mudança de iluminação entre o bloco no referencial e o bloco que está sendo codificado: esta diferença será o erro de previsão para este bloco.

Esse tipo de previsão tem alguns prós e contras:

  • Se tudo correr bem, o algoritmo será capaz de encontrar um bloco correspondente com pouco erro de predição para que, uma vez transformado, o tamanho total do vetor de movimento mais o erro de predição seja menor do que o tamanho de uma codificação bruta.
  • Se o algoritmo de correspondência de blocos falhar em encontrar uma correspondência adequada, o erro de predição será considerável. Assim, o tamanho geral do vetor de movimento mais o erro de previsão será maior do que a codificação bruta. Nesse caso, o codificador abriria uma exceção e enviaria uma codificação bruta para aquele bloco específico.
  • Se o bloco correspondente no quadro de referência também foi codificado usando a predição de quadro Inter, os erros cometidos para sua codificação serão propagados para o próximo bloco. Se cada quadro fosse codificado com essa técnica, não haveria como um decodificador sincronizar com um fluxo de vídeo porque seria impossível obter as imagens de referência.

Por causa dessas desvantagens, um referencial confiável e periódico deve ser usado para que essa técnica seja eficiente e útil. Esse referencial é conhecido como Intra-frame , que é estritamente intracodificado, portanto pode sempre ser decodificado sem informações adicionais.

Na maioria dos projetos, existem dois tipos de quadros intermediários: quadros P e quadros B. Esses dois tipos de quadros e os quadros I (imagens intracodificadas) geralmente se unem em um GOP (Grupo de imagens). O I-frame não precisa de informações adicionais para ser decodificado e pode ser usado como uma referência confiável. Essa estrutura também permite atingir uma periodicidade de quadro I, que é necessária para a sincronização do decodificador.

Tipos de quadro

A diferença entre os quadros P e B é o quadro de referência que eles podem usar.

P-frame

P-frame é o termo usado para definir as imagens previstas para a frente. A previsão é feita a partir de uma imagem anterior, principalmente um quadro I ou quadro P, de modo que requer menos dados de codificação (≈50% quando comparado ao tamanho do quadro I).

A quantidade de dados necessária para fazer essa previsão consiste em vetores de movimento e coeficientes de transformação que descrevem a correção da previsão. Envolve o uso de compensação de movimento .

Quadro B

Quadro B é o termo para imagens previstas bidirecionalmente. Este tipo de método de predição ocupa menos dados de codificação do que os quadros P em geral (≈25% quando comparado ao tamanho do quadro I) porque a predição é feita a partir de um quadro anterior ou posterior ou de ambos. (Os quadros B também podem ser menos eficientes do que os quadros P em certos casos, por exemplo: codificação sem perdas)

Semelhante aos quadros P, os quadros B são expressos como vetores de movimento e coeficientes de transformação. Para evitar um erro de propagação crescente, os quadros B não são usados ​​como referência para fazer mais previsões na maioria dos padrões de codificação. No entanto, em métodos de codificação mais recentes (como H.264 / MPEG-4 AVC e HEVC ), os quadros B podem ser usados ​​como referência para melhor exploração da redundância temporal.

Estrutura típica de grupo de imagens (GOP)

Ilustração das dependências do esquema de grupos de imagens IBBPBB ... O tempo vai da esquerda para a direita.

A estrutura típica de Grupo de imagens (GOP) é ​​IBBPBBP ... O quadro I é usado para prever o primeiro quadro P e esses dois quadros também são usados ​​para prever o primeiro e o segundo quadros B. O segundo quadro P é previsto também usando o primeiro quadro I. Ambos os quadros P se unem para prever o terceiro e o quarto quadros B. O esquema é mostrado na próxima imagem:

Essa estrutura sugere um problema porque o quarto quadro (um quadro P) é necessário para prever o segundo e o terceiro (quadros B). Portanto, precisamos transmitir o quadro P antes dos quadros B e isso atrasará a transmissão (será necessário manter o quadro P). Essa estrutura tem pontos fortes:

  • Minimiza o problema de possíveis áreas descobertas.
  • Os quadros P e B precisam de menos dados do que os quadros I, portanto, menos dados são transmitidos.

Mas tem pontos fracos:

  • Isso aumenta a complexidade do decodificador, o que pode significar mais memória necessária para reorganizar os quadros e um pouco mais de poder de processamento.
  • Os quadros B podem introduzir dependência de decodificação que inevitavelmente aumenta a latência de decodificação.

Melhorias de predição de quadro H.264 Inter

As melhorias mais importantes desta técnica em relação ao padrão H.264 anterior são:

  • Partição de bloco mais flexível
  • Resolução de até ¼ de compensação de movimento de pixel
  • Referências múltiplas
  • Enhanced Direct / Skip Macroblock

Partição de bloco mais flexível

Partição do bloco de luminância de 16 × 16 ( MPEG-2 ), 16 × 8, 8 × 16 e 8 × 8. O último caso permite a divisão do bloco em novos blocos de 4 × 8, 8 × 4 ou 4 × 4.

H.264 block division.svg

O quadro a ser codificado é dividido em blocos de tamanhos iguais, conforme mostrado na imagem acima. Cada previsão de bloco será blocos do mesmo tamanho que as imagens de referência, compensados ​​por um pequeno deslocamento.

Resolução de até ¼ de compensação de movimento de pixel

Pixels na posição de meio pixel são obtidos aplicando um filtro de comprimento 6.

H = [1 -5 20 20 -5 1]

Por exemplo:

b = A - 5B + 20C + 20D - 5E + F

Pixels na posição de um quarto de pixel são obtidos por interpolação bilinear .

Enquanto o MPEG-2 permite uma resolução de ½ pixel, o Inter frame permite uma resolução de até ¼ pixel. Isso significa que é possível pesquisar um bloco no quadro para ser codificado em outros quadros de referência, ou podemos interpolar pixels inexistentes para encontrar blocos que sejam ainda mais adequados ao bloco atual. Se o vetor de movimento for um número inteiro de unidades de amostras, isso significa que é possível encontrar nas imagens de referência o bloco compensado em movimento. Se o vetor de movimento não for um inteiro, a previsão será obtida a partir de pixels interpolados por um filtro interpolador para as direções horizontal e vertical.

Subpel interpolation.jpg

Referências múltiplas

Múltiplas referências para estimativa de movimento permitem encontrar a melhor referência em 2 buffers possíveis (Lista 0 para imagens anteriores, Lista 1 para imagens futuras) que contêm até 16 quadros no total. A previsão de blocos é feita por uma soma ponderada de blocos da imagem de referência. Ele permite uma melhor qualidade de imagem em cenas onde há mudanças de plano, zoom ou quando novos objetos são revelados.

Múltiplas referências.jpg

Enhanced Direct / Skip Macroblock

Os modos Skip e Direct são usados ​​com muita frequência, especialmente com B-frames. Eles reduzem significativamente o número de bits a serem codificados. Esses modos são referidos quando um bloco é codificado sem enviar erro residual ou vetores de movimento. O codificador registrará apenas que é um Skip Macroblock. O decodificador irá deduzir o vetor de movimento do bloco codificado do Modo Direto / Ignorar de outros blocos já decodificados.

Existem duas maneiras de deduzir o movimento: Skip.jpg direto

Temporal
Ele usa o vetor de movimento do bloco do quadro da Lista 1, localizado na mesma posição para deduzir o vetor de movimento. O bloco da Lista 1 usa um bloco da Lista 0 como referência.
Espacial
Ele prevê o movimento de macroblocos vizinhos no mesmo quadro. Um possível critério poderia ser copiar o vetor de movimento de um bloco vizinho. Esses modos são usados ​​em zonas uniformes da imagem onde não há muito movimento.

Bloco partição.jpg

Na figura acima, os blocos rosa são blocos codificados do Modo Direto / Ignorar. Como podemos ver, eles são usados ​​com muita freqüência, principalmente em B-frames.

Informações adicionais

Embora o uso do termo "quadro" seja comum no uso informal, em muitos casos (como em padrões internacionais para codificação de vídeo por MPEG e VCEG ) um conceito mais geral é aplicado usando a palavra "imagem" em vez de "quadro" , onde uma imagem pode ser um quadro completo ou um único campo entrelaçado .

Codecs de vídeo , como MPEG-2 , H.264 ou Ogg Theora, reduzem a quantidade de dados em um fluxo seguindo os quadros-chave com um ou mais quadros internos. Normalmente, esses quadros podem ser codificados usando uma taxa de bits menor do que a necessária para os quadros-chave porque grande parte da imagem é normalmente semelhante, portanto, apenas as partes alteradas precisam ser codificadas.

Veja também

Referências

  • Software H.264: http://iphome.hhi.de/suehring/tml/download/
  • T.Wiegand, GJ Sullivan, G. Bjøntegaard, A.Luthra: Overview of the H.264 / AVC Video Coding Standard . IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, julho de 2003