UMA ETAPA DE UMA CADEIA — O QUE ENTRA, O QUE SAI E O QUE QUEBRA DEPOIS
Onde isto fica no pipeline de codificação
Um codificador de vídeo não é um algoritmo, mas oito etapas numa ordem fixa, e a ordem não é arbitrária: cada etapa existe porque a anterior tornou o seu trabalho possível. Esta ferramenta modela uma delas. A cadeia abaixo liga às outras sete.
Simulador de estimativa de movimento — descobre para onde cada bloco se moveu e codifica a diferença em vez do bloco
- O que entra
- Um quadro P ou B junto com os seus quadros de referência.
- O que sai
- Um vetor de movimento por bloco e um resíduo — exatamente aquilo que a predição errou.
- O que a etapa seguinte pressupõe
- A quantização recebe um resíduo, não uma imagem. Resíduos ficam perto de zero em quase todo lugar, e é justamente por isso que quantizá-los sai barato.
- O que dá errado aqui
- Uma correspondência ruim não produz uma imagem errada, produz uma imagem cara. O resíduo carrega mais energia, e o mesmo ajuste de quantizador emite então mais bits. Esta etapa muda o tamanho da saída, não os seus ajustes.
Problema resolvido na íntegra
-
A janela de pesquisa derivada de 225 posições por bloco 5 passos
Uma pesquisa de movimento completa testa 225 posições por bloco, 14 400 no total. Determine a janela de pesquisa a partir daí e o que se ganha com uma pesquisa rápida.
-
225 é um quadrado perfeito, e essa é a pista: a pesquisa é uma janela quadrada de 15 por 15 deslocamentos candidatos, o que significa de −7 a +7 píxeis em cada direção.
-
Dividir o total pela contagem por bloco dá o número de blocos em que o fotograma foi dividido.
-
O custo cresce com o quadrado do raio de pesquisa, pelo que alargar a janela torna-se rapidamente dispendioso: um raio de 7 custa 225 posições, um raio de 15 custa 961, um raio de 31 custa 3969.
-
Essa relação quadrática é a razão pela qual existem pesquisas rápidas. Uma pesquisa em três passos amostra nove pontos, refina e repete — 27 posições em vez de 225.
-
Oito vezes mais económica, e não equivalente: desce em direção a um mínimo local e pode ignorar a melhor correspondência real se a superfície de erro tiver mais do que uma depressão.
Resposta
A ferramenta indica 14400 pontos pesquisados, à razão de 225,0 por bloco. Aqui está todo o dilema prático da codificação de vídeo: a busca exaustiva é ótima, mas o seu custo cresce com o quadrado do raio. Por isso, todos os codificadores recorrem a uma heurística e aceitam que, por vezes, será escolhido um vetor pior. Parte do preço do erro vê-se na linha Energia residual (EQM): um vetor inadequado deixa um resíduo maior, o que exige mais dados para a codificação. A busca rápida de movimento não é uma mera aproximação destinada a poupar tempo; é uma aposta em que os bits perdidos com vetores imperfeitos serão menos úteis do que se forem aplicados noutro ponto.
-
Referências (2)
- Block matching and motion vectors as the standard uses them: T. Wiegand, G. J. Sullivan, G. Bjontegaard and A. Luthra, "Overview of the H.264/AVC video coding standard." IEEE Transactions on Circuits and Systems for Video Technology 13(7), 560–576, 2003.
- The diamond search this tool implements alongside full search: S. Zhu and K.-K. Ma, "A new diamond search algorithm for fast block-matching motion estimation." IEEE Transactions on Image Processing 9(2), 287–290, 2000.